Skip to content

Commit 7592147

Browse files
committed
Fix issue with enum in module.
1 parent 6fc2efe commit 7592147

File tree

2 files changed

+9
-4
lines changed

2 files changed

+9
-4
lines changed

analysis/src/SemanticTokens.ml

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -107,7 +107,8 @@ let emitFromLoc ~loc ~type_ emitter =
107107

108108
let emitLongident ?(backwards = false) ?(jsx = false)
109109
?(lowerCaseToken = if jsx then Token.JsxLowercase else Token.Variable)
110-
?(upperCaseToken = Token.Namespace) ~pos ~lid ~debug emitter =
110+
?(upperCaseToken = Token.Namespace) ?(lastToken = None) ~pos ~lid ~debug
111+
emitter =
111112
let rec flatten acc lid =
112113
match lid with
113114
| Longident.Lident txt -> txt :: acc
@@ -119,7 +120,11 @@ let emitLongident ?(backwards = false) ?(jsx = false)
119120
let rec loop pos segments =
120121
match segments with
121122
| [id] when isUppercaseId id || isLowercaseId id ->
122-
let type_ = if isUppercaseId id then upperCaseToken else lowerCaseToken in
123+
let type_ =
124+
match lastToken with
125+
| Some type_ -> type_
126+
| None -> if isUppercaseId id then upperCaseToken else lowerCaseToken
127+
in
123128
if debug then
124129
Printf.printf "Lident: %s %s %s\n" id (posToString pos)
125130
(Token.tokenTypeDebug type_);
@@ -170,7 +175,7 @@ let emitRecordLabel ~(label : Longident.t Location.loc) ~debug emitter =
170175

171176
let emitVariant ~(name : Longident.t Location.loc) ~debug emitter =
172177
emitter
173-
|> emitLongident ~upperCaseToken:Token.EnumMember
178+
|> emitLongident ~lastToken:(Some Token.EnumMember)
174179
~pos:(Utils.tupleOfLexing name.loc.loc_start)
175180
~lid:name.txt ~debug
176181

analysis/tests/src/expected/Parser.res.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -123,7 +123,7 @@ JsxTag <: (104,8)
123123
Lident: ToAsProp (104,9) Namespace
124124
Variable: true (107,4)->(107,11)
125125
QuotedIdent: true (108,8) Variable
126-
Ldot: T (110,19) EnumMember
126+
Ldot: T (110,19) Namespace
127127
Lident: A (110,21) EnumMember
128128
Variable: enumInModule (110,4)->(110,16)
129129

0 commit comments

Comments
 (0)