aboutsummaryrefslogtreecommitdiff
path: root/src/parser.cpp
diff options
context:
space:
mode:
authorgingerBill <bill@gingerbill.org>2023-05-30 23:06:04 +0100
committergingerBill <bill@gingerbill.org>2023-05-30 23:06:04 +0100
commit5376d32772186c5d676eb3718c67ac32fd662f7c (patch)
tree0b44529564c80467d9d8b5349ced8c50aa615e53 /src/parser.cpp
parent2924e478ee0da20a8c07bf4581bf86a2c53b8eb1 (diff)
Parse leading comment above attribute for value declarations
Diffstat (limited to 'src/parser.cpp')
-rw-r--r--src/parser.cpp8
1 files changed, 6 insertions, 2 deletions
diff --git a/src/parser.cpp b/src/parser.cpp
index afdb1078d..c19e3f859 100644
--- a/src/parser.cpp
+++ b/src/parser.cpp
@@ -4519,7 +4519,7 @@ gb_internal Ast *parse_foreign_decl(AstFile *f) {
return ast_bad_decl(f, token, f->curr_token);
}
-gb_internal Ast *parse_attribute(AstFile *f, Token token, TokenKind open_kind, TokenKind close_kind) {
+gb_internal Ast *parse_attribute(AstFile *f, Token token, TokenKind open_kind, TokenKind close_kind, CommentGroup *docs) {
Array<Ast *> elems = {};
Token open = {};
Token close = {};
@@ -4560,6 +4560,9 @@ gb_internal Ast *parse_attribute(AstFile *f, Token token, TokenKind open_kind, T
Ast *decl = parse_stmt(f);
if (decl->kind == Ast_ValueDecl) {
+ if (decl->ValueDecl.docs == nullptr && docs != nullptr) {
+ decl->ValueDecl.docs = docs;
+ }
array_add(&decl->ValueDecl.attributes, attribute);
} else if (decl->kind == Ast_ForeignBlockDecl) {
array_add(&decl->ForeignBlockDecl.attributes, attribute);
@@ -4708,8 +4711,9 @@ gb_internal Ast *parse_stmt(AstFile *f) {
} break;
case Token_At: {
+ CommentGroup *docs = f->lead_comment;
Token token = expect_token(f, Token_At);
- return parse_attribute(f, token, Token_OpenParen, Token_CloseParen);
+ return parse_attribute(f, token, Token_OpenParen, Token_CloseParen, docs);
}
case Token_Hash: {