@@ -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
@@ -489,8 +485,7 @@ class StructType extends @structtype, CompositeType {
489485 */
490486 private predicate hasEmbeddedField ( Type tp , int depth ) {
491487 exists ( Field f | this .hasFieldCand ( _, f , depth , true ) |
492- tp = f .getType ( ) or
493- tp = f .getType ( ) .( PointerType ) .getBaseType ( )
488+ tp = lookThroughPointerType ( f .getType ( ) )
494489 )
495490 }
496491
@@ -518,9 +513,7 @@ class StructType extends @structtype, CompositeType {
518513 this .hasFieldCand ( _, embeddedParent , depth - 1 , true ) and
519514 result .getName ( ) = name and
520515 (
521- result .getReceiverBaseType ( ) = embeddedParent .getType ( )
522- or
523- result .getReceiverBaseType ( ) = embeddedParent .getType ( ) .( PointerType ) .getBaseType ( )
516+ result .getReceiverBaseType ( ) = lookThroughPointerType ( embeddedParent .getType ( ) )
524517 or
525518 methodhosts ( result , embeddedParent .getType ( ) )
526519 )
@@ -644,6 +637,13 @@ class PointerType extends @pointertype, CompositeType {
644637 override string toString ( ) { result = "pointer type" }
645638}
646639
640+ Type lookThroughPointerType ( Type t ) {
641+ not t instanceof PointerType and
642+ result = t
643+ or
644+ result = t .( PointerType ) .getBaseType ( )
645+ }
646+
647647private newtype TTypeSetTerm =
648648 MkTypeSetTerm ( TypeSetLiteralType tslit , int index ) { component_types ( tslit , index , _, _) }
649649
0 commit comments