mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-08-12 12:26:02 +02:00
pastojs: precompiled proc: store shortref to enumtype of enumvalue
git-svn-id: trunk@49025 -
(cherry picked from commit 8b09375ec2
)
This commit is contained in:
parent
a778ccee9e
commit
63534c35a8
@ -25054,7 +25054,9 @@ var
|
|||||||
Parent: TPasElement;
|
Parent: TPasElement;
|
||||||
CurModule: TPasModule;
|
CurModule: TPasModule;
|
||||||
ElClass: TClass;
|
ElClass: TClass;
|
||||||
|
aResolver: TPas2JSResolver;
|
||||||
begin
|
begin
|
||||||
|
aResolver:=AContext.Resolver;
|
||||||
Result:=AContext.GetLocalName(El,[cvkGlobal]);
|
Result:=AContext.GetLocalName(El,[cvkGlobal]);
|
||||||
if Result<>'' then
|
if Result<>'' then
|
||||||
begin
|
begin
|
||||||
@ -25091,6 +25093,12 @@ begin
|
|||||||
Result:=TransformModuleName(TPasModule(Parent),true,AContext)
|
Result:=TransformModuleName(TPasModule(Parent),true,AContext)
|
||||||
else
|
else
|
||||||
RaiseNotSupported(El,AContext,20200609230526,GetObjPath(El));
|
RaiseNotSupported(El,AContext,20200609230526,GetObjPath(El));
|
||||||
|
end
|
||||||
|
else
|
||||||
|
begin
|
||||||
|
// parent has local var
|
||||||
|
if (coStoreImplJS in Options) and (aResolver.GetParentProcBody(Parent)=nil) then
|
||||||
|
StoreImplJSLocal(Parent,AContext);
|
||||||
end;
|
end;
|
||||||
Result:=Result+'.'+TransformElToJSName(El,AContext);
|
Result:=Result+'.'+TransformElToJSName(El,AContext);
|
||||||
end
|
end
|
||||||
|
@ -64,6 +64,7 @@ type
|
|||||||
procedure TestPCU_Class_Constructor;
|
procedure TestPCU_Class_Constructor;
|
||||||
procedure TestPCU_Class_ClassConstructor;
|
procedure TestPCU_Class_ClassConstructor;
|
||||||
procedure TestPCU_ClassInterface;
|
procedure TestPCU_ClassInterface;
|
||||||
|
procedure TestPCU_EnumNames;
|
||||||
procedure TestPCU_Namespace;
|
procedure TestPCU_Namespace;
|
||||||
procedure TestPCU_CheckVersionMain;
|
procedure TestPCU_CheckVersionMain;
|
||||||
procedure TestPCU_CheckVersionMain2;
|
procedure TestPCU_CheckVersionMain2;
|
||||||
@ -135,6 +136,7 @@ begin
|
|||||||
if ExpExitCode=0 then
|
if ExpExitCode=0 then
|
||||||
begin
|
begin
|
||||||
NewSrc:=JSFile.Source;
|
NewSrc:=JSFile.Source;
|
||||||
|
//writeln('TCustomTestCLI_Precompile.CheckPrecompile ',NewSrc);
|
||||||
if not CheckSrcDiff(OrigSrc,NewSrc,s) then
|
if not CheckSrcDiff(OrigSrc,NewSrc,s) then
|
||||||
begin
|
begin
|
||||||
WriteSources;
|
WriteSources;
|
||||||
@ -510,6 +512,46 @@ begin
|
|||||||
CheckPrecompile('test1.pas','src');
|
CheckPrecompile('test1.pas','src');
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
procedure TTestCLI_Precompile.TestPCU_EnumNames;
|
||||||
|
var
|
||||||
|
SharedParams: TStringList;
|
||||||
|
begin
|
||||||
|
AddUnit('src/system.pp',[
|
||||||
|
'type integer = longint;',
|
||||||
|
' TObject = class end;',
|
||||||
|
'procedure Writeln; varargs;'],
|
||||||
|
['procedure Writeln; begin end;']);
|
||||||
|
AddUnit('src/unit1.pp',
|
||||||
|
['type',
|
||||||
|
' TEnum = (red,green,blue);',
|
||||||
|
' TBird = class ',
|
||||||
|
' private',
|
||||||
|
' Color: TEnum;',
|
||||||
|
' public',
|
||||||
|
' procedure Fly;',
|
||||||
|
' procedure Run;',
|
||||||
|
' end;',
|
||||||
|
''],
|
||||||
|
['procedure TBird.Fly;',
|
||||||
|
'begin',
|
||||||
|
' Color:=blue;',
|
||||||
|
'end;',
|
||||||
|
'procedure TBird.Run;',
|
||||||
|
'begin',
|
||||||
|
' Color:=green;',
|
||||||
|
'end;']);
|
||||||
|
AddFile('test1.pas',[
|
||||||
|
'uses unit1;',
|
||||||
|
'var b: TBird;',
|
||||||
|
'begin',
|
||||||
|
' b.Fly();',
|
||||||
|
' b.Run();',
|
||||||
|
'end.']);
|
||||||
|
SharedParams:=TStringList.Create;
|
||||||
|
SharedParams.Add('-OoEnumNumbers-');
|
||||||
|
CheckPrecompile('test1.pas','src',SharedParams);
|
||||||
|
end;
|
||||||
|
|
||||||
procedure TTestCLI_Precompile.TestPCU_Namespace;
|
procedure TTestCLI_Precompile.TestPCU_Namespace;
|
||||||
begin
|
begin
|
||||||
AddUnit('src/system.pp',[
|
AddUnit('src/system.pp',[
|
||||||
|
Loading…
Reference in New Issue
Block a user