Skip to content

Commit c1e69b3

Browse files
committed
Fixed array casting bug
Arrays can only be (auto-)cast to strings and booleans.
1 parent 42ff398 commit c1e69b3

File tree

1 file changed

+8
-6
lines changed

1 file changed

+8
-6
lines changed

Source/Modules/Skyrim/Linter.py

+8-6
Original file line numberDiff line numberDiff line change
@@ -2202,7 +2202,9 @@ def NodeVisitor(self, node, expected = None):
22022202
elif node.type == self.NODE_BINARYOPERATOR:
22032203
if node.data.operator.type == self.KW_AS:
22042204
leftResult = self.NodeVisitor(node.data.leftOperand, expected)
2205-
rightResult = node.data.rightOperand.data.token.value
2205+
rightResult = node.data.rightOperand.data.token.value.upper()
2206+
if "[]" in leftResult and rightResult != self.KW_STRING and rightResult != self.KW_BOOL:
2207+
self.Abort("Arrays can only be cast to STRING and BOOL.")
22062208
result = rightResult
22072209
elif node.data.operator.type == self.OP_DOT:
22082210
leftResult = self.NodeVisitor(node.data.leftOperand, expected)
@@ -2244,21 +2246,21 @@ def NodeVisitor(self, node, expected = None):
22442246
def CanAutoCast(self, src, dest):
22452247
if not src or not dest:
22462248
return False
2249+
if dest == self.KW_BOOL:
2250+
return True
2251+
elif dest == self.KW_STRING:
2252+
return True
22472253
if "[]" in src:
22482254
return False
22492255
elif "[]" in dest:
22502256
return False
2251-
if dest == self.KW_BOOL:
2252-
return True
2253-
elif dest == self.KW_INT:
2257+
if dest == self.KW_INT:
22542258
return False
22552259
elif dest == self.KW_FLOAT:
22562260
if src == self.KW_INT:
22572261
return True
22582262
else:
22592263
return False
2260-
elif dest == self.KW_STRING:
2261-
return True
22622264
else:
22632265
if src == self.KW_NONE:
22642266
return True

0 commit comments

Comments
 (0)