881
881
getfield_tfunc (@nospecialize (s00), @nospecialize (name)) = _getfield_tfunc (fallback_lattice, s00, name, false )
882
882
getfield_tfunc (@specialize (lattice:: AbstractLattice ), @nospecialize (s00), @nospecialize (name)) = _getfield_tfunc (lattice, s00, name, false )
883
883
884
-
885
- function _getfield_fieldindex (@nospecialize (s), name:: Const )
884
+ function _getfield_fieldindex (s:: DataType , name:: Const )
886
885
nv = name. val
887
886
if isa (nv, Symbol)
888
887
nv = fieldindex (s, nv, false )
@@ -893,19 +892,17 @@ function _getfield_fieldindex(@nospecialize(s), name::Const)
893
892
return nothing
894
893
end
895
894
896
- function _getfield_tfunc_const (@nospecialize (sv), name:: Const , setfield:: Bool )
897
- if isa (name, Const)
898
- nv = _getfield_fieldindex (typeof (sv), name)
899
- nv === nothing && return Bottom
900
- if isa (sv, DataType) && nv == DATATYPE_TYPES_FIELDINDEX && isdefined (sv, nv)
895
+ function _getfield_tfunc_const (@nospecialize (sv), name:: Const )
896
+ nv = _getfield_fieldindex (typeof (sv), name)
897
+ nv === nothing && return Bottom
898
+ if isa (sv, DataType) && nv == DATATYPE_TYPES_FIELDINDEX && isdefined (sv, nv)
899
+ return Const (getfield (sv, nv))
900
+ end
901
+ if isconst (typeof (sv), nv)
902
+ if isdefined (sv, nv)
901
903
return Const (getfield (sv, nv))
902
904
end
903
- if isconst (typeof (sv), nv)
904
- if isdefined (sv, nv)
905
- return Const (getfield (sv, nv))
906
- end
907
- return Union{}
908
- end
905
+ return Bottom
909
906
end
910
907
return nothing
911
908
end
@@ -960,7 +957,7 @@ function _getfield_tfunc(lattice::ConstsLattice, @nospecialize(s00), @nospeciali
960
957
end
961
958
return Bottom
962
959
end
963
- r = _getfield_tfunc_const (sv, name, setfield )
960
+ r = _getfield_tfunc_const (sv, name)
964
961
r != = nothing && return r
965
962
end
966
963
s00 = widenconst (s00)
@@ -976,9 +973,9 @@ function _getfield_tfunc(lattice::JLTypeLattice, @nospecialize(s00), @nospeciali
976
973
end
977
974
if isType (s)
978
975
if isconstType (s)
979
- sv = s00. parameters[1 ]
976
+ sv = ( s00:: DataType ) . parameters[1 ]
980
977
if isa (name, Const)
981
- r = _getfield_tfunc_const (sv, name, setfield )
978
+ r = _getfield_tfunc_const (sv, name)
982
979
r != = nothing && return r
983
980
end
984
981
s = typeof (sv)
0 commit comments