@@ -446,11 +446,7 @@ class StructType extends @structtype, CompositeType {
446446 if n = ""
447447 then (
448448 isEmbedded = true and
449- (
450- name = tp .( NamedType ) .getName ( )
451- or
452- name = tp .( PointerType ) .getBaseType ( ) .( NamedType ) .getName ( )
453- )
449+ name = lookThroughPointerType ( tp ) .( NamedType ) .getName ( )
454450 ) else (
455451 isEmbedded = false and
456452 name = n
@@ -518,9 +514,7 @@ class StructType extends @structtype, CompositeType {
518514 this .hasFieldCand ( _, embeddedParent , depth - 1 , true ) and
519515 result .getName ( ) = name and
520516 (
521- result .getReceiverBaseType ( ) = embeddedParent .getType ( )
522- or
523- result .getReceiverBaseType ( ) = embeddedParent .getType ( ) .( PointerType ) .getBaseType ( )
517+ result .getReceiverBaseType ( ) = lookThroughPointerType ( embeddedParent .getType ( ) )
524518 or
525519 methodhosts ( result , embeddedParent .getType ( ) )
526520 )
@@ -644,6 +638,16 @@ class PointerType extends @pointertype, CompositeType {
644638 override string toString ( ) { result = "pointer type" }
645639}
646640
641+ /**
642+ * Gets the base type if `t` is a pointer type, otherwise `t` itself.
643+ */
644+ Type lookThroughPointerType ( Type t ) {
645+ not t instanceof PointerType and
646+ result = t
647+ or
648+ result = t .( PointerType ) .getBaseType ( )
649+ }
650+
647651private newtype TTypeSetTerm =
648652 MkTypeSetTerm ( TypeSetLiteralType tslit , int index ) { component_types ( tslit , index , _, _) }
649653
0 commit comments