Skip to content

Commit

Permalink
Showing 3 changed files with 32 additions and 2 deletions.
28 changes: 28 additions & 0 deletions spec/compiler/codegen/macro_spec.cr
Original file line number Diff line number Diff line change
@@ -1438,4 +1438,32 @@ describe "Code gen: macro" do
a
)).to_i.should eq(2)
end

it "initializes instance var in macro" do
run(%(
class Foo
{% begin %}
@x = 1
{% end %}
end
Foo.new.@x
), inject_primitives: false).to_i.should eq(1)
end

it "initializes class var in macro" do
run(%(
class Foo
{% begin %}
@@x = 1
{% end %}
def self.x
@@x
end
end
Foo.x
), inject_primitives: false).to_i.should eq(1)
end
end
Original file line number Diff line number Diff line change
@@ -119,7 +119,8 @@ module Crystal
node.target.is_a?(ClassVar)
when TypeDeclaration
node.var.is_a?(ClassVar)
when FileNode, Expressions, ClassDef, ModuleDef, EnumDef, Alias, Include, Extend, LibDef, Def, Macro, Call, Require
when FileNode, Expressions, ClassDef, ModuleDef, EnumDef, Alias, Include, Extend, LibDef, Def, Macro, Call, Require,
MacroExpression, MacroIf, MacroFor
true
else
false
Original file line number Diff line number Diff line change
@@ -32,7 +32,8 @@ class Crystal::InstanceVarsInitializerVisitor < Crystal::SemanticVisitor
node.target.is_a?(InstanceVar)
when TypeDeclaration
node.var.is_a?(InstanceVar)
when FileNode, Expressions, ClassDef, ModuleDef, Alias, Include, Extend, LibDef, Def, Macro, Call, Require
when FileNode, Expressions, ClassDef, ModuleDef, Alias, Include, Extend, LibDef, Def, Macro, Call, Require,
MacroExpression, MacroIf, MacroFor
true
else
false

0 comments on commit 90e9cfb

Please sign in to comment.