From e9c8d9b1b79ce3b3cce79e956417ba979b7ecd85 Mon Sep 17 00:00:00 2001 From: Mattias Gaertner Date: Thu, 31 Jan 2019 22:36:47 +0000 Subject: [PATCH] fcl-passrc: resolver: nicer error message on invalid set element type git-svn-id: trunk@41157 - --- packages/fcl-passrc/src/pasresolver.pp | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) 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);