diff --git a/packages/fcl-passrc/src/pasresolver.pp b/packages/fcl-passrc/src/pasresolver.pp index a7114287ef..6fe1b613dc 100644 --- a/packages/fcl-passrc/src/pasresolver.pp +++ b/packages/fcl-passrc/src/pasresolver.pp @@ -2348,6 +2348,8 @@ begin Result:=ExprKindNames[TBinaryExpr(El).Kind] else if C=TPasClassType then Result:=ObjKindNames[TPasClassType(El).ObjKind] + else if C=TPasUnresolvedSymbolRef then + Result:=El.Name else begin Result:=GetElementTypeName(TPasElementBaseClass(C)); @@ -5343,6 +5345,14 @@ begin end; procedure TPasResolver.FinishSetType(El: TPasSetType); + + function GetEnumTypePosEl: TPasElement; + begin + Result:=El.EnumType; + if Result.Parent<>El then + Result:=El; + end; + var BaseTypeData: TResElDataBaseType; StartResolved, EndResolved: TPasResolverResult; @@ -5372,10 +5382,12 @@ begin BaseTypeData:=TResElDataBaseType(EnumType.CustomData); if BaseTypeData.BaseType in (btAllChars+[btBoolean,btByte]) then exit; - RaiseXExpectedButYFound(20170216151553,'char or boolean',GetElementTypeName(EnumType),EnumType); + RaiseXExpectedButYFound(20170216151553,'char or boolean', + GetElementTypeName(EnumType),GetEnumTypePosEl); end; end; - RaiseXExpectedButYFound(20170216151557,'enum type',GetElementTypeName(EnumType),EnumType); + RaiseXExpectedButYFound(20170216151557,'enum type', + GetElementTypeName(EnumType),GetEnumTypePosEl); end; procedure TPasResolver.FinishSubElementType(Parent: TPasElement; El: TPasType);