@@ -1038,8 +1038,13 @@ deprecated class NamedType = DefinedType;
10381038
10391039/** A defined type. */
10401040class DefinedType extends @definedtype, CompositeType {
1041- /** Gets the type which this type is defined to be. */
1042- Type getBaseType() { underlying_type(this, result) }
1041+ /**
1042+ * Gets the type which this type is defined to be, if available.
1043+ *
1044+ * Note that this is only defined for types declared in the project being
1045+ * analyzed. It will not be defined for type declared in external packages.
1046+ */
1047+ Type getBaseType() { result = this.getEntity().(DeclaredType).getSpec().getTypeExpr().getType() }
10431048
10441049 override Method getMethod(string m) {
10451050 result = CompositeType.super.getMethod(m)
@@ -1049,7 +1054,7 @@ class DefinedType extends @definedtype, CompositeType {
10491054 or
10501055 // handle promoted methods
10511056 exists(StructType s, Type embedded |
1052- s = this.getBaseType () and
1057+ s = this.getUnderlyingType () and
10531058 s.hasOwnField(_, _, embedded, true) and
10541059 // ensure `m` can be promoted
10551060 not s.hasOwnField(_, m, _, _) and
@@ -1063,7 +1068,7 @@ class DefinedType extends @definedtype, CompositeType {
10631068 )
10641069 }
10651070
1066- override Type getUnderlyingType() { result = this.getBaseType().getUnderlyingType( ) }
1071+ override Type getUnderlyingType() { underlying_type(this, result ) }
10671072}
10681073
10691074/**
0 commit comments