@@ -48,6 +48,7 @@ const EMPTY_SLOTNAMES = "slotnames field is empty"
48
48
const SLOTFLAGS_MISMATCH = " length(slotnames) < length(slotflags)"
49
49
const SSAVALUETYPES_MISMATCH = " not all SSAValues in AST have a type in ssavaluetypes"
50
50
const SSAVALUETYPES_MISMATCH_UNINFERRED = " uninferred CodeInfo ssavaluetypes field does not equal the number of present SSAValues"
51
+ const SSAFLAGS_MISMATCH = " not all SSAValues have a corresponding `ssaflags`"
51
52
const NON_TOP_LEVEL_METHOD = " encountered `Expr` head `:method` in non-top-level code (i.e. `nargs` > 0)"
52
53
const NON_TOP_LEVEL_GLOBAL = " encountered `Expr` head `:global` in non-top-level code (i.e. `nargs` > 0)"
53
54
const SIGNATURE_NARGS_MISMATCH = " method signature does not match number of method arguments"
@@ -183,13 +184,16 @@ function validate_code!(errors::Vector{>:InvalidCodeError}, c::CodeInfo, is_top_
183
184
nssavals = length (c. code)
184
185
! is_top_level && nslotnames == 0 && push! (errors, InvalidCodeError (EMPTY_SLOTNAMES))
185
186
nslotnames < nslotflags && push! (errors, InvalidCodeError (SLOTFLAGS_MISMATCH, (nslotnames, nslotflags)))
186
- if c. inferred
187
- nssavaluetypes = length (c. ssavaluetypes:: Vector{Any} )
187
+ ssavaluetypes = c. ssavaluetypes
188
+ if isa (ssavaluetypes, Vector{Any})
189
+ nssavaluetypes = length (ssavaluetypes)
188
190
nssavaluetypes < nssavals && push! (errors, InvalidCodeError (SSAVALUETYPES_MISMATCH, (nssavals, nssavaluetypes)))
189
191
else
190
- ssavaluetypes = c . ssavaluetypes:: Int
191
- ssavaluetypes != nssavals && push! (errors, InvalidCodeError (SSAVALUETYPES_MISMATCH_UNINFERRED, (nssavals, ssavaluetypes )))
192
+ nssavaluetypes = ssavaluetypes:: Int
193
+ nssavaluetypes ≠ nssavals && push! (errors, InvalidCodeError (SSAVALUETYPES_MISMATCH_UNINFERRED, (nssavals, nssavaluetypes )))
192
194
end
195
+ nssaflags = length (c. ssaflags)
196
+ nssavals ≠ nssaflags && push! (errors, InvalidCodeError (SSAFLAGS_MISMATCH, (nssavals, nssaflags)))
193
197
return errors
194
198
end
195
199
0 commit comments