mirror of
https://github.com/odin-lang/Odin.git
synced 2026-02-16 08:04:07 +00:00
Change parser to use ^Expr rather than string for the foreign import paths
This commit is contained in:
@@ -538,7 +538,7 @@ Foreign_Import_Decl :: struct {
|
||||
import_tok: tokenizer.Token,
|
||||
name: ^Ident,
|
||||
collection_name: string,
|
||||
fullpaths: []string,
|
||||
fullpaths: []^Expr,
|
||||
comment: ^Comment_Group,
|
||||
}
|
||||
|
||||
|
||||
@@ -1190,12 +1190,12 @@ parse_foreign_decl :: proc(p: ^Parser) -> ^ast.Decl {
|
||||
error(p, name.pos, "illegal foreign import name: '_'")
|
||||
}
|
||||
|
||||
fullpaths: [dynamic]string
|
||||
fullpaths: [dynamic]^ast.Expr
|
||||
if allow_token(p, .Open_Brace) {
|
||||
for p.curr_tok.kind != .Close_Brace &&
|
||||
p.curr_tok.kind != .EOF {
|
||||
path := expect_token(p, .String)
|
||||
append(&fullpaths, path.text)
|
||||
path := parse_expr(p, false)
|
||||
append(&fullpaths, path)
|
||||
|
||||
allow_token(p, .Comma) or_break
|
||||
}
|
||||
@@ -1203,7 +1203,9 @@ parse_foreign_decl :: proc(p: ^Parser) -> ^ast.Decl {
|
||||
} else {
|
||||
path := expect_token(p, .String)
|
||||
reserve(&fullpaths, 1)
|
||||
append(&fullpaths, path.text)
|
||||
bl := ast.new(ast.Basic_Lit, path.pos, end_pos(path))
|
||||
bl.tok = tok
|
||||
append(&fullpaths, bl)
|
||||
}
|
||||
|
||||
if len(fullpaths) == 0 {
|
||||
|
||||
@@ -4894,7 +4894,7 @@ gb_internal Ast *parse_foreign_decl(AstFile *f) {
|
||||
while (f->curr_token.kind != Token_CloseBrace &&
|
||||
f->curr_token.kind != Token_EOF) {
|
||||
|
||||
Ast *path = parse_expr(f, true);
|
||||
Ast *path = parse_expr(f, false);
|
||||
array_add(&filepaths, path);
|
||||
|
||||
if (!allow_field_separator(f)) {
|
||||
|
||||
Reference in New Issue
Block a user