Skip to content

Commit 2c1bb2d

Browse files
asteriteRX14
authored andcommittedSep 26, 2017
Compiler: remove macro def (#5040)
1 parent 1c859ca commit 2c1bb2d

File tree

10 files changed

+137
-82
lines changed

10 files changed

+137
-82
lines changed
 

Diff for: ‎spec/compiler/codegen/macro_spec.cr

+28-14
Original file line numberDiff line numberDiff line change
@@ -139,11 +139,14 @@ describe "Code gen: macro" do
139139

140140
it "expands def macro with var" do
141141
run(%(
142-
macro def foo : Int32
143-
a = {{ 1 }}
142+
class Foo
143+
def foo : Int32
144+
{{ @type }}
145+
a = {{ 1 }}
146+
end
144147
end
145148
146-
foo
149+
Foo.new.foo
147150
)).to_i.should eq(1)
148151
end
149152

@@ -226,7 +229,8 @@ describe "Code gen: macro" do
226229
it "expands macro and resolves type correctly" do
227230
run(%(
228231
class Foo
229-
macro def foo : Int32
232+
def foo : Int32
233+
{{ @type }}
230234
1
231235
end
232236
end
@@ -337,7 +341,8 @@ describe "Code gen: macro" do
337341
class Foo
338342
@name : Int32?
339343
340-
macro def foo : Int32
344+
def foo : Int32
345+
{{ @type }}
341346
name = 1
342347
@name = name
343348
end
@@ -392,7 +397,8 @@ describe "Code gen: macro" do
392397
it "doesn't skip abstract classes when defining macro methods" do
393398
run(%(
394399
class Object
395-
macro def foo : Int32
400+
def foo : Int32
401+
{{ @type }}
396402
1
397403
end
398404
end
@@ -443,7 +449,8 @@ describe "Code gen: macro" do
443449
def initialize(@x : Int32, @y : Int32)
444450
end
445451
446-
macro def foo : String
452+
def foo : String
453+
{{ @type }}
447454
{{ Foo.instance_vars.last.name.stringify }}
448455
end
449456
@@ -974,7 +981,8 @@ describe "Code gen: macro" do
974981
it "codegens macro def with splat (#496)" do
975982
run(%(
976983
class Foo
977-
macro def bar(*args) : Int32
984+
def bar(*args) : Int32
985+
{{ @type }}
978986
args[0] + args[1] + args[2]
979987
end
980988
end
@@ -986,7 +994,8 @@ describe "Code gen: macro" do
986994
it "codegens macro def with default arg (similar to #496)" do
987995
run(%(
988996
class Foo
989-
macro def bar(foo = 1) : Int32
997+
def bar(foo = 1) : Int32
998+
{{ @type }}
990999
foo + 2
9911000
end
9921001
end
@@ -1118,11 +1127,14 @@ describe "Code gen: macro" do
11181127

11191128
it "expands macro def with return (#1040)" do
11201129
run(%(
1121-
macro def a : Int32
1122-
return 123
1130+
class Foo
1131+
def a : Int32
1132+
{{ @type }}
1133+
return 123
1134+
end
11231135
end
11241136
1125-
a
1137+
Foo.new.a
11261138
)).to_i.should eq(123)
11271139
end
11281140

@@ -1190,7 +1202,8 @@ describe "Code gen: macro" do
11901202
class Foo
11911203
Const = 123
11921204
1193-
macro def self.bar : Int32
1205+
def self.bar : Int32
1206+
{{ @type }}
11941207
foo { Const }
11951208
end
11961209
end
@@ -1212,7 +1225,8 @@ describe "Code gen: macro" do
12121225
it "types macro expansion bug (#1734)" do
12131226
run(%(
12141227
class Foo
1215-
macro def foo : Int32
1228+
def foo : Int32
1229+
{{ @type }}
12161230
1 || 2
12171231
end
12181232
end

Diff for: ‎spec/compiler/formatter/formatter_spec.cr

+6-6
Original file line numberDiff line numberDiff line change
@@ -537,7 +537,7 @@ describe Crystal::Formatter do
537537
assert_format "macro foo\n %foo\nend"
538538
assert_format "macro foo\n %foo{x.id+2} \nend", "macro foo\n %foo{x.id + 2}\nend"
539539
assert_format "macro foo\n %foo{x,y}\nend", "macro foo\n %foo{x, y}\nend"
540-
assert_format "macro def foo : Int32\n 1\nend"
540+
assert_format "def foo : Int32\n 1\nend"
541541
assert_format "class Foo\n macro foo\n 1\n end\nend"
542542
assert_format " {{ 1 + 2 }}", "{{ 1 + 2 }}"
543543
assert_format " {% for x in y %} 2 {% end %}", "{% for x in y %} 2 {% end %}"
@@ -546,7 +546,7 @@ describe Crystal::Formatter do
546546
assert_format "if 1\n {% if 2 %} {% end %}\nend"
547547
assert_format "if 1\n {% for x in y %} {% end %}\nend"
548548
assert_format "if 1\n {{1 + 2}}\nend"
549-
assert_format "macro def foo : self | Nil\n nil\nend"
549+
assert_format "def foo : self | Nil\n nil\nend"
550550
assert_format "macro foo(x)\n {% if 1 %} 2 {% end %}\nend"
551551
assert_format "macro foo()\n {% if 1 %} 2 {% end %} \nend", "macro foo\n {% if 1 %} 2 {% end %}\nend"
552552
assert_format "macro flags\n {% if 1 %}\\\n {% end %}\\\nend"
@@ -915,10 +915,10 @@ describe Crystal::Formatter do
915915
assert_format "foo : (A -> B)\nbar : C"
916916
assert_format "def foo(x : A(B), y)\nend"
917917
assert_format "alias X = (A, B) ->\nbar : C"
918-
assert_format "macro def foo : A(B)\n nil\nend"
919-
assert_format "macro def foo : (A, B) ->\n nil\nend"
920-
assert_format "macro def foo : (A | B(C))\n nil\nend"
921-
assert_format "macro def foo : A | B(C)\n nil\nend"
918+
assert_format "def foo : A(B)\n nil\nend"
919+
assert_format "def foo : (A, B) ->\n nil\nend"
920+
assert_format "def foo : (A | B(C))\n nil\nend"
921+
assert_format "def foo : A | B(C)\n nil\nend"
922922

923923
assert_format "foo &.bar.is_a?(Baz)"
924924
assert_format "foo &.bar.responds_to?(:baz)"

Diff for: ‎spec/compiler/lexer/lexer_macro_spec.cr

+1-1
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ describe "Lexer macro" do
3939
token.type.should eq(:MACRO_END)
4040
end
4141

42-
["begin", "do", "if", "unless", "class", "struct", "module", "def", "while", "until", "case", "macro", "fun", "lib", "union", "macro def"].each do |keyword|
42+
["begin", "do", "if", "unless", "class", "struct", "module", "def", "while", "until", "case", "macro", "fun", "lib", "union"].each do |keyword|
4343
it "lexes macro with nested #{keyword}" do
4444
lexer = Lexer.new(%(hello\n #{keyword} {{world}} end end))
4545

Diff for: ‎spec/compiler/parser/parser_doc_spec.cr

-1
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@ describe "Parser doc" do
99
{"def", "def foo\nend"},
1010
{"abstract def", "abstract def foo"},
1111
{"macro", "macro foo\nend"},
12-
{"macro def", "macro def foo : Int32\nend"},
1312
{"call without obj", "foo"},
1413
{"fun def", "fun foo : Int32\nend"},
1514
{"enum def", "enum Foo\nend"},

Diff for: ‎spec/compiler/parser/parser_spec.cr

+2-3
Original file line numberDiff line numberDiff line change
@@ -769,9 +769,8 @@ describe "Parser" do
769769
it_parses "macro foo;bar{% for x in y %}\\ \n body{% end %}\\ baz;end", Macro.new("foo", [] of Arg, Expressions.from(["bar".macro_literal, MacroFor.new(["x".var], "y".var, "body".macro_literal), "baz;".macro_literal] of ASTNode))
770770
it_parses "macro foo; 1 + 2 {{foo}}\\ 3 + 4; end", Macro.new("foo", [] of Arg, Expressions.from([" 1 + 2 ".macro_literal, MacroExpression.new("foo".var), "3 + 4; ".macro_literal] of ASTNode))
771771

772-
it_parses "macro def foo : String; 1; end", Def.new("foo", body: 1.int32, return_type: "String".path, macro_def: true)
773-
it_parses "macro def foo(x) : String; 1; end", Def.new("foo", ["x".arg], 1.int32, return_type: "String".path, macro_def: true)
774-
it_parses "macro def foo; 1; end", Def.new("foo", body: 1.int32, macro_def: true)
772+
assert_syntax_error "macro def foo : String; 1; end"
773+
775774
it_parses "def foo;{{@type}};end", Def.new("foo", body: Expressions.from([MacroExpression.new("@type".instance_var)] of ASTNode), macro_def: true)
776775

777776
it_parses "macro foo;bar{% begin %}body{% end %}baz;end", Macro.new("foo", [] of Arg, Expressions.from(["bar".macro_literal, MacroIf.new(true.bool, "body".macro_literal), "baz;".macro_literal] of ASTNode))

0 commit comments

Comments
 (0)
Please sign in to comment.