@@ -117,28 +117,56 @@ end
117
117
118
118
@testset " ParseError printing" begin
119
119
try
120
- JuliaSyntax . parsestmt (JuliaSyntax . SyntaxNode, " a -- b -- c" , filename= " somefile.jl" )
120
+ parsestmt (SyntaxNode, " a -- b -- c" , filename= " somefile.jl" )
121
121
@assert false " error should be thrown"
122
122
catch exc
123
123
@test exc isa JuliaSyntax. ParseError
124
124
@test sprint (showerror, exc) == """
125
125
ParseError:
126
126
# Error @ somefile.jl:1:3
127
127
a -- b -- c
128
- # └┘ ── invalid operator
129
- # Error @ somefile.jl:1:8
130
- a -- b -- c
131
- # └┘ ── invalid operator"""
128
+ # └┘ ── invalid operator"""
132
129
@test occursin (" Stacktrace:\n " , sprint (showerror, exc, catch_backtrace ()))
133
130
file_url = JuliaSyntax. _file_url (" somefile.jl" )
134
131
@test sprint (showerror, exc, context= :color => true ) == """
135
132
ParseError:
136
133
\e [90m# Error @ \e [0;0m\e ]8;;$file_url #1:3\e\\\e [90msomefile.jl:1:3\e [0;0m\e ]8;;\e\\
137
134
a \e [48;2;120;70;70m--\e [0;0m b -- c
138
- \e [90m# └┘ ── \e [0;0m\e [91minvalid operator\e [0;0m
139
- \e [90m# Error @ \e [0;0m\e ]8;;$file_url #1:8\e\\\e [90msomefile.jl:1:8\e [0;0m\e ]8;;\e\\
140
- a -- b \e [48;2;120;70;70m--\e [0;0m c
141
- \e [90m# └┘ ── \e [0;0m\e [91minvalid operator\e [0;0m"""
135
+ \e [90m# └┘ ── \e [0;0m\e [91minvalid operator\e [0;0m"""
136
+ end
137
+
138
+ try
139
+ # Test that warnings are printed first followed by only the first error
140
+ parsestmt (SyntaxNode, """
141
+ @(a)
142
+ x -- y
143
+ z -- y""" , filename= " somefile.jl" )
144
+ @assert false " error should be thrown"
145
+ catch exc
146
+ @test exc isa JuliaSyntax. ParseError
147
+ @test sprint (showerror, exc) == """
148
+ ParseError:
149
+ # Warning @ somefile.jl:1:2
150
+ @(a)
151
+ #└─┘ ── parenthesizing macro names is unnecessary
152
+ # Error @ somefile.jl:2:1
153
+ @(a)
154
+ x
155
+ ╙ ── unexpected text after parsing statement"""
156
+ end
157
+
158
+ try
159
+ # Test that initial warnings are always printed
160
+ parsestmt (SyntaxNode, """
161
+ @(a)""" , filename= " somefile.jl" )
162
+ @assert false " error should be thrown"
163
+ catch exc
164
+ @test exc isa JuliaSyntax. ParseError
165
+ @test sprint (showerror, exc) == """
166
+ ParseError:
167
+ # Warning @ somefile.jl:1:2
168
+ @(a)
169
+ #└─┘ ── parenthesizing macro names is unnecessary"""
142
170
end
143
171
end
144
172
0 commit comments