mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-09-12 11:09:14 +02:00
fcl-passrc: resolver: error on record helper for byte in mode objfpc
git-svn-id: trunk@41272 -
This commit is contained in:
parent
3779d69075
commit
cb1a53c680
@ -177,11 +177,12 @@ const
|
||||
nIllegalAssignmentToForLoopVar = 3111;
|
||||
nFunctionHidesIdentifier_NonProc = 3112;
|
||||
nTypeXCannotBeExtendedByATypeHelper = 3113;
|
||||
nDerivedXMustExtendASubClassY = 3114;
|
||||
nDefaultPropertyNotAllowedInHelperForX = 3115;
|
||||
nHelpersCannotBeUsedAsTypes = 3116;
|
||||
nBitWiseOperationsAre32Bit = 3117;
|
||||
nImplictConversionUnicodeToAnsi = 3118;
|
||||
nTypeXCannotBeExtendedByARecordHelper = 3114;
|
||||
nDerivedXMustExtendASubClassY = 3115;
|
||||
nDefaultPropertyNotAllowedInHelperForX = 3116;
|
||||
nHelpersCannotBeUsedAsTypes = 3117;
|
||||
nBitWiseOperationsAre32Bit = 3118;
|
||||
nImplictConversionUnicodeToAnsi = 3119;
|
||||
|
||||
// using same IDs as FPC
|
||||
nVirtualMethodXHasLowerVisibility = 3250; // was 3050
|
||||
@ -306,6 +307,7 @@ resourcestring
|
||||
sCantAssignValuesToConstVariable = 'Can''t assign values to const variable';
|
||||
sIllegalAssignmentToForLoopVar = 'Illegal assignment to for-loop variable "%s"';
|
||||
sTypeXCannotBeExtendedByATypeHelper = 'Type "%s" cannot be extended by a type helper';
|
||||
sTypeXCannotBeExtendedByARecordHelper = 'Type "%s" cannot be extended by a record helper';
|
||||
sDerivedXMustExtendASubClassY = 'Derived %s must extend a subclass of "%s" or the class itself';
|
||||
sDefaultPropertyNotAllowedInHelperForX = 'Default property not allowed in helper for %s';
|
||||
sHelpersCannotBeUsedAsTypes = 'helpers cannot be used as types';
|
||||
|
@ -7158,16 +7158,16 @@ begin
|
||||
else if ((HelperForType.ClassType=TPasUnresolvedSymbolRef)
|
||||
and (HelperForType.CustomData is TResElDataBaseType)) then
|
||||
else
|
||||
RaiseMsg(20190116200304,nTypeXCannotBeExtendedByATypeHelper,
|
||||
sTypeXCannotBeExtendedByATypeHelper,[GetTypeDescription(HelperForType)],aClass);
|
||||
RaiseMsg(20190116200304,nTypeXCannotBeExtendedByARecordHelper,
|
||||
sTypeXCannotBeExtendedByARecordHelper,[GetTypeDescription(HelperForType)],aClass);
|
||||
end
|
||||
else
|
||||
begin
|
||||
// mode objfpc
|
||||
if (HelperForType.ClassType=TPasRecordType) then
|
||||
else
|
||||
RaiseMsg(20190116200519,nTypeXCannotBeExtendedByATypeHelper,
|
||||
sTypeXCannotBeExtendedByATypeHelper,[GetTypeDescription(HelperForType)],aClass);
|
||||
RaiseMsg(20190116200519,nTypeXCannotBeExtendedByARecordHelper,
|
||||
sTypeXCannotBeExtendedByARecordHelper,[GetTypeDescription(HelperForType)],aClass);
|
||||
end;
|
||||
okTypeHelper:
|
||||
begin
|
||||
|
@ -904,6 +904,7 @@ type
|
||||
Procedure TestClassHelper_DefaultClassProperty;
|
||||
Procedure TestClassHelper_MultipleScopeHelpers;
|
||||
Procedure TestRecordHelper;
|
||||
Procedure TestRecordHelper_ForByteFail;
|
||||
Procedure TestRecordHelper_ClassNonStaticFail;
|
||||
Procedure TestRecordHelper_InheritedObjFPC;
|
||||
Procedure TestRecordHelper_Constructor_NewInstance;
|
||||
@ -16751,6 +16752,20 @@ begin
|
||||
ParseProgram;
|
||||
end;
|
||||
|
||||
procedure TTestResolver.TestRecordHelper_ForByteFail;
|
||||
begin
|
||||
StartProgram(false);
|
||||
Add([
|
||||
'{$mode objfpc}',
|
||||
'type',
|
||||
' TRecHelper = record helper for byte',
|
||||
' class var Glob: word;',
|
||||
' end;',
|
||||
'begin',
|
||||
'']);
|
||||
CheckResolverException('Type "Byte" cannot be extended by a record helper',nTypeXCannotBeExtendedByARecordHelper);
|
||||
end;
|
||||
|
||||
procedure TTestResolver.TestRecordHelper_ClassNonStaticFail;
|
||||
begin
|
||||
StartProgram(false);
|
||||
|
Loading…
Reference in New Issue
Block a user