浏览代码

compiler: don't look at unit and namespace symbols from other units while searching for a type (issue #0025054)

git-svn-id: trunk@25536 -
paul 12 年之前
父节点
当前提交
f3963172ba

+ 6 - 0
.gitattributes

@@ -12661,6 +12661,8 @@ tests/webtbf/uw4103.pp svneol=native#text/plain
 tests/webtbf/uw6922.pp svneol=native#text/plain
 tests/webtbf/uw8738a.pas svneol=native#text/plain
 tests/webtbf/uw8738b.pas svneol=native#text/plain
+tests/webtbs/Integer.ns.pp svneol=native#text/pascal
+tests/webtbs/Integer.pp svneol=native#text/pascal
 tests/webtbs/tu2002.pp svneol=native#text/plain
 tests/webtbs/tw0555.pp svneol=native#text/plain
 tests/webtbs/tw0630.pp svneol=native#text/plain
@@ -13589,6 +13591,8 @@ tests/webtbs/tw25004.pp svneol=native#text/pascal
 tests/webtbs/tw2503.pp svneol=native#text/plain
 tests/webtbs/tw25030.pp svneol=native#text/pascal
 tests/webtbs/tw2504.pp svneol=native#text/plain
+tests/webtbs/tw25054a.pp svneol=native#text/pascal
+tests/webtbs/tw25054b.pp svneol=native#text/pascal
 tests/webtbs/tw2514.pp svneol=native#text/plain
 tests/webtbs/tw2525.pp svneol=native#text/plain
 tests/webtbs/tw2536.pp svneol=native#text/plain
@@ -14361,6 +14365,8 @@ tests/webtbs/uw22741a.pp svneol=native#text/plain
 tests/webtbs/uw22741b.pp svneol=native#text/plain
 tests/webtbs/uw23204.pp svneol=native#text/plain
 tests/webtbs/uw2364.pp svneol=native#text/plain
+tests/webtbs/uw25054a.pp svneol=native#text/pascal
+tests/webtbs/uw25054b.pp svneol=native#text/pascal
 tests/webtbs/uw2706a.pp svneol=native#text/plain
 tests/webtbs/uw2706b.pp svneol=native#text/plain
 tests/webtbs/uw2731.pp svneol=native#text/plain

+ 1 - 0
compiler/symtable.pas

@@ -2444,6 +2444,7 @@ implementation
               begin
                 srsym:=tsym(srsymtable.FindWithHash(hashedid));
                 if assigned(srsym) and
+                   (not(srsym.typ in [unitsym,namespacesym]) or srsymtable.iscurrentunit) and
                    not(srsym.typ in [fieldvarsym,paravarsym,propertysym,procsym,labelsym]) and
                    (not (srsym.owner.symtabletype in [objectsymtable,recordsymtable]) or is_visible_for_object(srsym,current_structdef)) then
                   begin

+ 7 - 0
tests/webtbs/Integer.ns.pp

@@ -0,0 +1,7 @@
+unit Integer.ns;
+
+interface
+
+implementation
+
+end.

+ 7 - 0
tests/webtbs/Integer.pp

@@ -0,0 +1,7 @@
+unit Integer;
+
+interface
+
+implementation
+
+end.

+ 10 - 0
tests/webtbs/tw25054a.pp

@@ -0,0 +1,10 @@
+program tw25054a;
+
+uses
+  uw25054a;
+  
+var
+  X: Integer;
+
+begin
+end.

+ 10 - 0
tests/webtbs/tw25054b.pp

@@ -0,0 +1,10 @@
+program tw25054b;
+
+uses
+  uw25054b;
+  
+var
+  X: Integer;
+
+begin
+end.

+ 10 - 0
tests/webtbs/uw25054a.pp

@@ -0,0 +1,10 @@
+unit uw25054a;
+
+interface
+
+uses
+  Integer.ns;
+
+implementation
+
+end.

+ 10 - 0
tests/webtbs/uw25054b.pp

@@ -0,0 +1,10 @@
+unit uw25054b;
+
+interface
+
+uses
+  Integer;
+
+implementation
+
+end.