浏览代码

pastojs: scoped enum with numbers

git-svn-id: trunk@37913 -
Mattias Gaertner 7 年之前
父节点
当前提交
b00143005c
共有 2 个文件被更改,包括 33 次插入0 次删除
  1. 5 0
      packages/pastojs/src/fppas2js.pp
  2. 28 0
      packages/pastojs/tests/tcmodules.pas

+ 5 - 0
packages/pastojs/src/fppas2js.pp

@@ -4595,6 +4595,11 @@ begin
     if Right=nil then
       Left.Free;
   end;
+  if Right is TJSLiteral then
+    begin
+    FreeAndNil(Left);
+    exit(Right);
+    end;
   // connect via dot
   Result:=CreateDotExpression(El,Left,Right);
 end;

+ 28 - 0
packages/pastojs/tests/tcmodules.pas

@@ -273,6 +273,7 @@ type
     Procedure TestEnum_AsParams;
     Procedure TestEnumRange_Array;
     Procedure TestEnum_ForIn;
+    Procedure TestEnum_ScopedNumber;
     Procedure TestSet;
     Procedure TestSet_Operators;
     Procedure TestSet_Operator_In;
@@ -3358,6 +3359,33 @@ begin
     '']));
 end;
 
+procedure TTestModule.TestEnum_ScopedNumber;
+begin
+  Converter.Options:=Converter.Options+[coEnumNumbers];
+  StartProgram(false);
+  Add([
+  'type',
+  '  TEnum = (Red, Green);',
+  'var',
+  '  e: TEnum;',
+  'begin',
+  '  e:=TEnum.Green;',
+  '']);
+  ConvertProgram;
+  CheckSource('TestEnum_ScopedNumber',
+    LinesToStr([ // statements
+    'this.TEnum = {',
+    '  "0": "Red",',
+    '  Red: 0,',
+    '  "1": "Green",',
+    '  Green: 1',
+    '};',
+    'this.e = 0;',
+    '']),
+    LinesToStr([
+    '$mod.e = 1;']));
+end;
+
 procedure TTestModule.TestSet;
 begin
   StartProgram(false);