@@ -19,20 +19,18 @@ META:GetSet("PatternContract", false--[[# as false | string]])
1919
2020function META .Equal (a --[[ #: TString]] , b --[[ #: TString]] )
2121 if a .Type ~= b .Type then return false , " types differ" end
22+
2223 return a .Hash == b .Hash , " string values are equal"
2324end
2425
2526local STRING_ID = " string"
2627
2728local function compute_hash (data , pattern )
28- if pattern then
29- return pattern
30- elseif data then
31- return data
32- end
29+ if pattern then return pattern elseif data then return data end
3330
3431 return STRING_ID
3532end
33+
3634function META :GetHashForMutationTracking ()
3735 if self .Data then return self .Hash end
3836
@@ -147,7 +145,7 @@ local function new(data--[[#: string | nil]], pattern--[[#: string | nil]])
147145 Parent = false ,
148146 Contract = false ,
149147 MetaTable = false ,
150- Hash = compute_hash (data , pattern )
148+ Hash = compute_hash (data , pattern ),
151149 },
152150 META
153151 )
183181
184182function META :Widen ()
185183 if self .PatternContract then return self end
184+
186185 return META .New ()
187186end
188187
@@ -205,9 +204,9 @@ function META:CopyLiteralness(obj--[[#: TBaseType]])
205204 if str then if str .PatternContract then return self end end
206205 end
207206
208- if not obj :IsLiteral () then
209- self .Data = false
210- self .Hash = compute_hash (self .Data , self .PatternContract )
207+ if not obj :IsLiteral () then
208+ self .Data = false
209+ self .Hash = compute_hash (self .Data , self .PatternContract )
211210 end
212211 end
213212 end
0 commit comments