pastojs: precompiled proc: store shortref to enumtype of enumvalue

git-svn-id: trunk@49025 -
This commit is contained in:
Mattias Gaertner 2021-03-21 17:57:44 +00:00
parent 8b63a69f59
commit 8b09375ec2
2 changed files with 50 additions and 0 deletions

View File

@ -25054,7 +25054,9 @@ var
Parent: TPasElement;
CurModule: TPasModule;
ElClass: TClass;
aResolver: TPas2JSResolver;
begin
aResolver:=AContext.Resolver;
Result:=AContext.GetLocalName(El,[cvkGlobal]);
if Result<>'' then
begin
@ -25091,6 +25093,12 @@ begin
Result:=TransformModuleName(TPasModule(Parent),true,AContext)
else
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;
Result:=Result+'.'+TransformElToJSName(El,AContext);
end

View File

@ -64,6 +64,7 @@ type
procedure TestPCU_Class_Constructor;
procedure TestPCU_Class_ClassConstructor;
procedure TestPCU_ClassInterface;
procedure TestPCU_EnumNames;
procedure TestPCU_Namespace;
procedure TestPCU_CheckVersionMain;
procedure TestPCU_CheckVersionMain2;
@ -135,6 +136,7 @@ begin
if ExpExitCode=0 then
begin
NewSrc:=JSFile.Source;
//writeln('TCustomTestCLI_Precompile.CheckPrecompile ',NewSrc);
if not CheckSrcDiff(OrigSrc,NewSrc,s) then
begin
WriteSources;
@ -510,6 +512,46 @@ begin
CheckPrecompile('test1.pas','src');
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;
begin
AddUnit('src/system.pp',[