@@ -138,9 +138,8 @@ nonLocalHFun({Mod, Fun} = FSpec, Args, SafeFuns) ->
138
138
compile_mod (ModuleCodeBinStr ) -> compile_mod (ModuleCodeBinStr , [], []).
139
139
compile_mod (ModuleCodeBinStr , Opts ) -> compile_mod (ModuleCodeBinStr , [], Opts ).
140
140
compile_mod (ModuleCodeBinStr , Restrict , Opts ) when is_binary (ModuleCodeBinStr ) ->
141
- case erl_scan :string (binary_to_list (ModuleCodeBinStr )) of
142
- {ok , Tokens , _ } ->
143
- TokenGroups = cut_dot (Tokens ),
141
+ case tokenize (ModuleCodeBinStr ) of
142
+ {ok , TokenGroups } ->
144
143
case lists :foldl (
145
144
fun (TokenGroup , Acc ) when is_list (Acc ) ->
146
145
case erl_parse :parse_form (TokenGroup ) of
@@ -169,6 +168,20 @@ compile_mod(ModuleCodeBinStr, Restrict, Opts) when is_binary(ModuleCodeBinStr) -
169
168
end ;
170
169
Error -> Error
171
170
end ;
171
+ Error -> Error
172
+ end .
173
+
174
+ tokenize (ModuleCodeBinStr ) ->
175
+ case erl_scan :string (binary_to_list (ModuleCodeBinStr ), {0 ,1 }) of
176
+ {ok , RawTokens , _ } ->
177
+ case aleppo :process_tokens (RawTokens ) of
178
+ {ok , TokensEOF } ->
179
+ [{eof ,_ } | RevTokens ] = lists :reverse (TokensEOF ),
180
+ Tokens = lists :reverse (RevTokens ),
181
+ {ok , cut_dot (Tokens )};
182
+ {error , Error } ->
183
+ {error , {preprocess , {{0 , 1 }, ? MODULE , Error }, {0 , 1 }}}
184
+ end ;
172
185
{error , ErrorInfo , ErrorLocation } ->
173
186
{error , {scan , ErrorInfo , ErrorLocation }}
174
187
end .
@@ -185,10 +198,11 @@ error_info(Type, [{_, _, _} = ErrorInfo | ErrorInfos]) ->
185
198
[error_info (Type , ErrorInfo ) | error_info (Type , ErrorInfos )];
186
199
error_info (Type , [{_ ,ErrorInfos }|Tail ]) ->
187
200
error_info (Type , ErrorInfos ) ++ error_info (Type , Tail );
188
- error_info (Type , {Line , Module , ErrorDesc }) ->
201
+ error_info (Type , {{ Line , Column } , Module , ErrorDesc }) ->
189
202
#{
190
203
type => Type ,
191
204
row => Line ,
205
+ col => Column ,
192
206
text => list_to_binary (Module :format_error (ErrorDesc ))
193
207
}.
194
208
0 commit comments