瀏覽代碼

* fixed error in r19248 whereby the namespace for automatically generated
classes was no longer set afterwards (and the new code is also much
simpler)

git-svn-id: branches/jvmbackend@19554 -

Jonas Maebe 13 年之前
父節點
當前提交
2d7e674168
共有 2 個文件被更改,包括 6 次插入19 次删除
  1. 1 19
      compiler/pdecobj.pas
  2. 5 0
      compiler/symdef.pas

+ 1 - 19
compiler/pdecobj.pas

@@ -417,22 +417,13 @@ implementation
                   hs:=ChangeFileExt(hs,target_info.sharedlibext);
                 if Copy(hs,1,length(target_info.sharedlibprefix))<>target_info.sharedlibprefix then
                   hs:=target_info.sharedlibprefix+hs;
-              end
-            else if assigned(current_module.namespace) then
-              begin
-                { import_lib is used to specify the package name for the JVM
-                  target (= namespace) }
-                if (target_info.system=system_jvm_java32) and
-                   assigned(current_module.namespace) then
-                  hs:=current_module.namespace^;
-                { not sure how to deal with cppclass here, since namespaces
-                  mean something different there }
               end;
             if hs<>'' then
               begin
                 { the JVM expects java/lang/Object rather than java.lang.Object }
                 if target_info.system=system_jvm_java32 then
                   Replace(hs,'.','/');
+                stringdispose(od.import_lib);
                 od.import_lib:=stringdup(hs);
               end;
             include(od.objectoptions, oo_is_external);
@@ -446,15 +437,6 @@ implementation
         else
           begin
             od.objextname:=stringdup(od.objrealname^);
-            { ToDo for cpp: read/set the namespace of the class (influences the mangled name)
-                (notice that for the JVM target, there is no difference between
-                 the namespace and import_lib) }
-            if (target_info.system=system_jvm_java32) and
-               assigned(current_module.namespace) then
-              begin
-                od.import_lib:=stringdup(current_module.namespace^);
-                Replace(od.import_lib^,'.','/');
-              end;
           end;
       end;
 

+ 5 - 0
compiler/symdef.pas

@@ -3022,6 +3022,11 @@ implementation
         objname:=stringdup(upper(n));
         objrealname:=stringdup(n);
         objectoptions:=[];
+        if assigned(current_module.namespace) then
+          begin
+            import_lib:=stringdup(current_module.namespace^);
+            replace(import_lib^,'.','/');
+          end;
       end;
 
     constructor tabstractrecorddef.ppuload(dt:tdeftyp;ppufile:tcompilerppufile);