@@ -354,7 +354,7 @@ tokenize([$:, T | Rest], Line, Column, Scope, Tokens) when
354
354
355
355
tokenize (" ..." ++ Rest , Line , Column , Scope , Tokens ) ->
356
356
NewScope = maybe_warn_too_many_of_same_char (" ..." , Rest , Line , Column , Scope ),
357
- Token = check_call_identifier (Line , Column , '...' , Rest ),
357
+ Token = check_call_identifier (Line , Column , " ... " , '...' , Rest ),
358
358
tokenize (Rest , Line , Column + 3 , NewScope , [Token | Tokens ]);
359
359
360
360
tokenize (" =>" ++ Rest , Line , Column , Scope , Tokens ) ->
@@ -546,7 +546,7 @@ tokenize([$: | String] = Original, Line, Column, Scope, Tokens) ->
546
546
{_Kind , Unencoded , Atom , Rest , Length , Ascii , _Special } ->
547
547
NewScope = maybe_warn_for_ambiguous_bang_before_equals (atom , Unencoded , Rest , Line , Column , Scope ),
548
548
TrackedScope = track_ascii (Ascii , NewScope ),
549
- Token = {atom , {Line , Column , nil }, Atom },
549
+ Token = {atom , {Line , Column , Unencoded }, Atom },
550
550
tokenize (Rest , Line , Column + 1 + Length , TrackedScope , [Token | Tokens ]);
551
551
empty when Scope # elixir_tokenizer .cursor_completion == false ->
552
552
unexpected_token (Original , Line , Column , Scope , Tokens );
@@ -654,7 +654,7 @@ tokenize(String, Line, Column, OriginalScope, Tokens) ->
654
654
655
655
case Rest of
656
656
[$: | T ] when ? is_space (hd (T )) ->
657
- Token = {kw_identifier , {Line , Column , nil }, Atom },
657
+ Token = {kw_identifier , {Line , Column , Unencoded }, Atom },
658
658
tokenize (T , Line , Column + Length + 1 , Scope , [Token | Tokens ]);
659
659
660
660
[$: | T ] when hd (T ) =/= $: ->
@@ -670,11 +670,11 @@ tokenize(String, Line, Column, OriginalScope, Tokens) ->
670
670
error ({Line , Column , " reserved token: " , atom_to_list (Atom )}, Rest , Scope , Tokens );
671
671
672
672
_ when Kind == alias ->
673
- tokenize_alias (Rest , Line , Column , Atom , Length , Ascii , Special , Scope , Tokens );
673
+ tokenize_alias (Rest , Line , Column , Unencoded , Atom , Length , Ascii , Special , Scope , Tokens );
674
674
675
675
_ when Kind == identifier ->
676
676
NewScope = maybe_warn_for_ambiguous_bang_before_equals (identifier , Unencoded , Rest , Line , Column , Scope ),
677
- Token = check_call_identifier (Line , Column , Atom , Rest ),
677
+ Token = check_call_identifier (Line , Column , Unencoded , Atom , Rest ),
678
678
tokenize (Rest , Line , Column + Length , NewScope , [Token | Tokens ]);
679
679
680
680
_ ->
@@ -876,19 +876,19 @@ handle_op(Rest, Line, Column, Kind, Length, Op, Scope, Tokens) ->
876
876
handle_dot ([$. , T1 , T2 , T3 | Rest ], Line , Column , DotInfo , Scope , Tokens ) when
877
877
? unary_op3 (T1 , T2 , T3 ); ? comp_op3 (T1 , T2 , T3 ); ? and_op3 (T1 , T2 , T3 ); ? or_op3 (T1 , T2 , T3 );
878
878
? arrow_op3 (T1 , T2 , T3 ); ? xor_op3 (T1 , T2 , T3 ); ? concat_op3 (T1 , T2 , T3 ) ->
879
- handle_call_identifier (Rest , Line , Column , DotInfo , 3 , list_to_atom ( [T1 , T2 , T3 ]) , Scope , Tokens );
879
+ handle_call_identifier (Rest , Line , Column , DotInfo , 3 , [T1 , T2 , T3 ], Scope , Tokens );
880
880
881
881
% ## Two Token Operators
882
882
handle_dot ([$. , T1 , T2 | Rest ], Line , Column , DotInfo , Scope , Tokens ) when
883
883
? comp_op2 (T1 , T2 ); ? rel_op2 (T1 , T2 ); ? and_op (T1 , T2 ); ? or_op (T1 , T2 );
884
884
? arrow_op (T1 , T2 ); ? in_match_op (T1 , T2 ); ? concat_op (T1 , T2 ); ? power_op (T1 , T2 ); ? type_op (T1 , T2 ) ->
885
- handle_call_identifier (Rest , Line , Column , DotInfo , 2 , list_to_atom ( [T1 , T2 ]) , Scope , Tokens );
885
+ handle_call_identifier (Rest , Line , Column , DotInfo , 2 , [T1 , T2 ], Scope , Tokens );
886
886
887
887
% ## Single Token Operators
888
888
handle_dot ([$. , T | Rest ], Line , Column , DotInfo , Scope , Tokens ) when
889
889
? at_op (T ); ? unary_op (T ); ? capture_op (T ); ? dual_op (T ); ? mult_op (T );
890
890
? rel_op (T ); ? match_op (T ); ? pipe_op (T ) ->
891
- handle_call_identifier (Rest , Line , Column , DotInfo , 1 , list_to_atom ( [T ]) , Scope , Tokens );
891
+ handle_call_identifier (Rest , Line , Column , DotInfo , 1 , [T ], Scope , Tokens );
892
892
893
893
% ## Exception for .( as it needs to be treated specially in the parser
894
894
handle_dot ([$. , $( | Rest ], Line , Column , DotInfo , Scope , Tokens ) ->
@@ -914,7 +914,7 @@ handle_dot([$., H | T] = Original, Line, Column, DotInfo, Scope, Tokens) when ?i
914
914
915
915
case unsafe_to_atom (Part , Line , Column , NewScope ) of
916
916
{ok , Atom } ->
917
- Token = check_call_identifier (Line , Column , Atom , Rest ),
917
+ Token = check_call_identifier (Line , Column , Part , Atom , Rest ),
918
918
TokensSoFar = add_token_with_eol ({'.' , DotInfo }, Tokens ),
919
919
tokenize (Rest , NewLine , NewColumn , NewScope , [Token | TokensSoFar ]);
920
920
@@ -932,8 +932,8 @@ handle_dot([$. | Rest], Line, Column, DotInfo, Scope, Tokens) ->
932
932
TokensSoFar = add_token_with_eol ({'.' , DotInfo }, Tokens ),
933
933
tokenize (Rest , Line , Column , Scope , TokensSoFar ).
934
934
935
- handle_call_identifier (Rest , Line , Column , DotInfo , Length , Op , Scope , Tokens ) ->
936
- Token = check_call_identifier (Line , Column , Op , Rest ),
935
+ handle_call_identifier (Rest , Line , Column , DotInfo , Length , UnencodedOp , Scope , Tokens ) ->
936
+ Token = check_call_identifier (Line , Column , UnencodedOp , list_to_atom ( UnencodedOp ) , Rest ),
937
937
TokensSoFar = add_token_with_eol ({'.' , DotInfo }, Tokens ),
938
938
tokenize (Rest , Line , Column + Length , Scope , [Token | TokensSoFar ]).
939
939
@@ -1263,30 +1263,28 @@ maybe_keyword(_) -> true.
1263
1263
list_to_codepoint_hex (List ) ->
1264
1264
[io_lib :format (" 0x~4.16.0B " , [Codepoint ]) || Codepoint <- List ].
1265
1265
1266
- tokenize_alias (Rest , Line , Column , Atom , Length , Ascii , Special , Scope , Tokens ) ->
1266
+ tokenize_alias (Rest , Line , Column , Unencoded , Atom , Length , Ascii , Special , Scope , Tokens ) ->
1267
1267
if
1268
1268
not Ascii ->
1269
- AtomName = atom_to_list (Atom ),
1270
- Invalid = hd ([C || C <- AtomName , C > 127 ]),
1271
- Reason = {Line , Column , invalid_character_error (" alias (only ASCII characters are allowed)" , Invalid ), AtomName },
1272
- error (Reason , AtomName ++ Rest , Scope , Tokens );
1269
+ Invalid = hd ([C || C <- Unencoded , C > 127 ]),
1270
+ Reason = {Line , Column , invalid_character_error (" alias (only ASCII characters are allowed)" , Invalid ), Unencoded },
1271
+ error (Reason , Unencoded ++ Rest , Scope , Tokens );
1273
1272
Special /= [] ->
1274
- AtomName = atom_to_list (Atom ),
1275
- Reason = {Line , Column , invalid_character_error (" alias" , hd (Special )), AtomName },
1276
- error (Reason , AtomName ++ Rest , Scope , Tokens );
1273
+ Reason = {Line , Column , invalid_character_error (" alias" , hd (Special )), Unencoded },
1274
+ error (Reason , Unencoded ++ Rest , Scope , Tokens );
1277
1275
true ->
1278
- AliasesToken = {alias , {Line , Column , nil }, Atom },
1276
+ AliasesToken = {alias , {Line , Column , Unencoded }, Atom },
1279
1277
tokenize (Rest , Line , Column + Length , Scope , [AliasesToken | Tokens ])
1280
1278
end .
1281
1279
1282
1280
% % Check if it is a call identifier (paren | bracket | do)
1283
1281
1284
- check_call_identifier (Line , Column , Atom , [$( | _ ]) ->
1285
- {paren_identifier , {Line , Column , nil }, Atom };
1286
- check_call_identifier (Line , Column , Atom , [$[ | _ ]) ->
1287
- {bracket_identifier , {Line , Column , nil }, Atom };
1288
- check_call_identifier (Line , Column , Atom , _Rest ) ->
1289
- {identifier , {Line , Column , nil }, Atom }.
1282
+ check_call_identifier (Line , Column , Unencoded , Atom , [$( | _ ]) ->
1283
+ {paren_identifier , {Line , Column , Unencoded }, Atom };
1284
+ check_call_identifier (Line , Column , Unencoded , Atom , [$[ | _ ]) ->
1285
+ {bracket_identifier , {Line , Column , Unencoded }, Atom };
1286
+ check_call_identifier (Line , Column , Unencoded , Atom , _Rest ) ->
1287
+ {identifier , {Line , Column , Unencoded }, Atom }.
1290
1288
1291
1289
add_token_with_eol ({unary_op , _ , _ } = Left , T ) -> [Left | T ];
1292
1290
add_token_with_eol (Left , [{eol , _ } | T ]) -> [Left | T ];
0 commit comments