Explorar o código

* don't generate typed constant initialisers for set and enum constants
declared local to functions on the JVM target, because we don't generate
field constants for them (fixes run time error when declaring a symbolic
enum/set constant in a function on the JVM target)

git-svn-id: trunk@25953 -

Jonas Maebe %!s(int64=11) %!d(string=hai) anos
pai
achega
3ed60082d3
Modificáronse 1 ficheiros con 5 adicións e 2 borrados
  1. 5 2
      compiler/pdecl.pas

+ 5 - 2
compiler/pdecl.pas

@@ -226,8 +226,11 @@ implementation
 {$ifdef jvm}
                        { for the JVM target, some constants need to be
                          initialized at run time (enums, sets) -> create fake
-                         typed const to do so }
-                       if assigned(tconstsym(sym).constdef) and
+                         typed const to do so (at least if they are visible
+                         outside this routine, since we won't directly access
+                         these symbols in the generated code) }
+                       if (symtablestack.top.symtablelevel<normal_function_level) and
+                          assigned(tconstsym(sym).constdef) and
                           (tconstsym(sym).constdef.typ in [enumdef,setdef]) then
                          jvm_add_typed_const_initializer(tconstsym(sym));
 {$endif}