http://gcc.gnu.org/bugzilla/show_bug.cgi?id=54178
Bug #: 54178 Summary: qualifying a record aggregate incorrectly hides names in local instantiation Classification: Unclassified Product: gcc Version: 4.8.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: ada AssignedTo: unassig...@gcc.gnu.org ReportedBy: georg...@googlemail.com Qualifying the actual parameter with its type seems to trigger the bug. While the surrounding declarations and equivalent instantiations work fine with the very same objects involved (W, H), Test_3 is rejected, the only difference being a CGSize' attached to the aggregate. package G is type CGFloat is digits 5 range 0.0 .. 4_096.0; type CGSize is record Width : CGFloat; Height : CGFloat; end record; end G; generic Frame : CGSize; Formal : CGFloat; package G.Chld is end; with G.Chld; with Ada.Command_Line; procedure Test_Inst is use G; procedure Inner_Proc (W : Positive; H : Positive); -- instantiates G.Chld using values made from W and H, -- cf. Test_3 versus surrounding procedure Inner_Proc (W : Positive; H : Positive) is Test_1 : constant CGSize := CGSize'(Width => CGFloat (W), Height => CGFloat (H)); subtype Test_2 is CGFloat range CGFloat (W) .. CGFloat (H); package Test_3 is new Chld -- W, H not visible? (Frame => CGSize'(Width => CGFloat (W), Height => CGFloat (H)), Formal => CGFloat (H)); package Test_4 is new Chld (Frame => (Width => CGFloat (W), Height => CGFloat (H)), Formal => CGFloat (H)); package Test_5 is new Chld (Frame => CGSize'(Width => CGFloat (Standard.Test_Inst.Inner_Proc.W), Height => CGFloat (Standard.Test_Inst.Inner_Proc.H)), Formal => CGFloat (H)); package Test_6 is new Chld (Frame => Test_1, Formal => CGFloat (H)); begin null; end Inner_Proc; use Ada.Command_Line; X, Y : Natural; begin X := Natural'Value (Argument (1)); Y := Natural'Value (Argument (2)); Inner_Proc (X, Y); end Test_Inst; $ gnatmake -gnatcvf test_inst.adb gcc -c -gnatcvf test_inst.adb GNAT 4.8.0 20120804 (experimental) [trunk revision 190143] Copyright 1992-2012, Free Software Foundation, Inc. Checking: test_inst.adb (source file time stamp: 2012-08-05 08:57:26) ==============Error messages for source file: test_inst.adb --------------Line numbers from file: vis.ada (starting at line 16) 40. (Frame => CGSize'(Width => CGFloat (W), | >>> "W" is not visible >>> non-visible declaration at line 24 41. Height => CGFloat (H)), | >>> "H" is not visible >>> non-visible declaration at line 25 55 lines: 4 errors gnatmake: "test_inst.adb" compilation error $ gcc -v Using built-in specs. COLLECT_GCC=gcc COLLECT_LTO_WRAPPER=/Users/bauhaus/mine/libexec/gcc/x86_64-apple-darwin11.4.0/4.8.0/lto-wrapper Target: x86_64-apple-darwin11.4.0 Configured with: /Users/bauhaus/src/gcc/configure --prefix=/Users/bauhaus/mine --disable-nls --disable-multilib --disable-libstdcxx-pch CC='gcc -D_FORTIFY_SOURCE=0' --enable-languages=c,ada,c++ --no-create --no-recursion Thread model: posix gcc version 4.8.0 20120804 (experimental) [trunk revision 190143] (GCC) $ sysctl machdep.cpu.brand_string machdep.cpu.brand_string: Intel(R) Core(TM) i7-2635QM CPU @ 2.00GHz $ uname -a Darwin localhost 11.4.0 Darwin Kernel Version 11.4.0: Mon Apr 9 19:32:15 PDT 2012; root:xnu-1699.26.8~1/RELEASE_X86_64 x86_64