mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-04-09 08:30:54 +02:00
pastojs: precompiled proc: store shortref to enumtype of enumvalue
git-svn-id: trunk@49025 -
This commit is contained in:
parent
8b63a69f59
commit
8b09375ec2
@ -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
|
||||
|
@ -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',[
|
||||
|
Loading…
Reference in New Issue
Block a user