Commit cfbe9a6f61

Robin Voetter <robin@voetter.nl>
2021-09-02 14:49:24
Address spaces: Forbid addrspace and linksection for local variables
1 parent 805e1bf
Changed files (1)
src/AstGen.zig
@@ -2377,6 +2377,7 @@ fn varDecl(
     const gpa = astgen.gpa;
     const tree = astgen.tree;
     const token_tags = tree.tokens.items(.tag);
+    const main_tokens = tree.nodes.items(.main_token);
 
     const name_token = var_decl.ast.mut_token + 1;
     const ident_name_raw = tree.tokenSlice(name_token);
@@ -2391,6 +2392,14 @@ fn varDecl(
         return astgen.failNode(node, "variables must be initialized", .{});
     }
 
+    if (var_decl.ast.addrspace_node != 0) {
+        return astgen.failTok(main_tokens[var_decl.ast.addrspace_node], "cannot set address space of local variable '{s}'", .{ ident_name_raw });
+    }
+
+    if (var_decl.ast.section_node != 0) {
+        return astgen.failTok(main_tokens[var_decl.ast.section_node], "cannot set section of local variable '{s}'", .{ ident_name_raw });
+    }
+
     const align_inst: Zir.Inst.Ref = if (var_decl.ast.align_node != 0)
         try expr(gz, scope, align_rl, var_decl.ast.align_node)
     else