Fix bug where an anonymous member of a built-in block containing another member with an implicitly-sized array caused two copies of the block to be referenced.


git-svn-id: https://cvs.khronos.org/svn/repos/ogl/trunk/ecosystem/public/sdk/tools/glslang@26633 e7fa87d3-cd2b-0410-9028-fcbf551c1848
diff --git a/Test/baseResults/150.tesc.out b/Test/baseResults/150.tesc.out
index e9b5497..f600223 100644
--- a/Test/baseResults/150.tesc.out
+++ b/Test/baseResults/150.tesc.out
@@ -190,13 +190,13 @@
 0:30              1 (const int)

 0:32      move second child to first child (4-component vector of float)

 0:32        gl_Position: direct index for structure (gl_Position 4-component vector of float)

-0:32          'anon@1' (out block{gl_Position 4-component vector of float gl_Position, gl_PointSize float gl_PointSize, out implicitly-sized array of float gl_ClipDistance})

+0:32          'anon@0' (out block{gl_Position 4-component vector of float gl_Position, gl_PointSize float gl_PointSize, out implicitly-sized array of float gl_ClipDistance})

 0:32          Constant:

 0:32            0 (const uint)

 0:32        'p' (4-component vector of float)

 0:33      move second child to first child (float)

 0:33        gl_PointSize: direct index for structure (gl_PointSize float)

-0:33          'anon@1' (out block{gl_Position 4-component vector of float gl_Position, gl_PointSize float gl_PointSize, out implicitly-sized array of float gl_ClipDistance})

+0:33          'anon@0' (out block{gl_Position 4-component vector of float gl_Position, gl_PointSize float gl_PointSize, out implicitly-sized array of float gl_ClipDistance})

 0:33          Constant:

 0:33            1 (const uint)

 0:33        'ps' (float)

@@ -470,13 +470,13 @@
 0:40              1 (const int)

 0:42      move second child to first child (4-component vector of float)

 0:42        gl_Position: direct index for structure (gl_Position 4-component vector of float)

-0:42          'anon@1' (out block{gl_Position 4-component vector of float gl_Position, gl_PointSize float gl_PointSize, out implicitly-sized array of float gl_ClipDistance})

+0:42          'anon@0' (out block{gl_Position 4-component vector of float gl_Position, gl_PointSize float gl_PointSize, out implicitly-sized array of float gl_ClipDistance})

 0:42          Constant:

 0:42            0 (const uint)

 0:42        'p' (4-component vector of float)

 0:43      move second child to first child (float)

 0:43        gl_PointSize: direct index for structure (gl_PointSize float)

-0:43          'anon@1' (out block{gl_Position 4-component vector of float gl_Position, gl_PointSize float gl_PointSize, out implicitly-sized array of float gl_ClipDistance})

+0:43          'anon@0' (out block{gl_Position 4-component vector of float gl_Position, gl_PointSize float gl_PointSize, out implicitly-sized array of float gl_ClipDistance})

 0:43          Constant:

 0:43            1 (const uint)

 0:43        'ps' (float)

@@ -1181,13 +1181,13 @@
 0:30              1 (const int)

 0:32      move second child to first child (4-component vector of float)

 0:32        gl_Position: direct index for structure (gl_Position 4-component vector of float)

-0:32          'anon@1' (out block{gl_Position 4-component vector of float gl_Position, gl_PointSize float gl_PointSize, out 1-element array of float gl_ClipDistance})

+0:32          'anon@0' (out block{gl_Position 4-component vector of float gl_Position, gl_PointSize float gl_PointSize, out 3-element array of float gl_ClipDistance})

 0:32          Constant:

 0:32            0 (const uint)

 0:32        'p' (4-component vector of float)

 0:33      move second child to first child (float)

 0:33        gl_PointSize: direct index for structure (gl_PointSize float)

-0:33          'anon@1' (out block{gl_Position 4-component vector of float gl_Position, gl_PointSize float gl_PointSize, out 1-element array of float gl_ClipDistance})

+0:33          'anon@0' (out block{gl_Position 4-component vector of float gl_Position, gl_PointSize float gl_PointSize, out 3-element array of float gl_ClipDistance})

 0:33          Constant:

 0:33            1 (const uint)

 0:33        'ps' (float)

@@ -1271,13 +1271,13 @@
 0:40              1 (const int)

 0:42      move second child to first child (4-component vector of float)

 0:42        gl_Position: direct index for structure (gl_Position 4-component vector of float)

-0:42          'anon@1' (out block{gl_Position 4-component vector of float gl_Position, gl_PointSize float gl_PointSize, out 1-element array of float gl_ClipDistance})

+0:42          'anon@0' (out block{gl_Position 4-component vector of float gl_Position, gl_PointSize float gl_PointSize, out 3-element array of float gl_ClipDistance})

 0:42          Constant:

 0:42            0 (const uint)

 0:42        'p' (4-component vector of float)

 0:43      move second child to first child (float)

 0:43        gl_PointSize: direct index for structure (gl_PointSize float)

-0:43          'anon@1' (out block{gl_Position 4-component vector of float gl_Position, gl_PointSize float gl_PointSize, out 1-element array of float gl_ClipDistance})

+0:43          'anon@0' (out block{gl_Position 4-component vector of float gl_Position, gl_PointSize float gl_PointSize, out 3-element array of float gl_ClipDistance})

 0:43          Constant:

 0:43            1 (const uint)

 0:43        'ps' (float)

diff --git a/Test/baseResults/400.tese.out b/Test/baseResults/400.tese.out
index 1b43662..db66a0e 100644
--- a/Test/baseResults/400.tese.out
+++ b/Test/baseResults/400.tese.out
@@ -111,13 +111,13 @@
 0:40              1 (const int)

 0:42      move second child to first child (4-component vector of float)

 0:42        gl_Position: direct index for structure (gl_Position 4-component vector of float)

-0:42          'anon@1' (out block{gl_Position 4-component vector of float gl_Position, gl_PointSize float gl_PointSize, out implicitly-sized array of float gl_ClipDistance})

+0:42          'anon@0' (out block{gl_Position 4-component vector of float gl_Position, gl_PointSize float gl_PointSize, out implicitly-sized array of float gl_ClipDistance})

 0:42          Constant:

 0:42            0 (const uint)

 0:42        'p' (4-component vector of float)

 0:43      move second child to first child (float)

 0:43        gl_PointSize: direct index for structure (gl_PointSize float)

-0:43          'anon@1' (out block{gl_Position 4-component vector of float gl_Position, gl_PointSize float gl_PointSize, out implicitly-sized array of float gl_ClipDistance})

+0:43          'anon@0' (out block{gl_Position 4-component vector of float gl_Position, gl_PointSize float gl_PointSize, out implicitly-sized array of float gl_ClipDistance})

 0:43          Constant:

 0:43            1 (const uint)

 0:43        'ps' (float)

@@ -235,13 +235,13 @@
 0:40              1 (const int)

 0:42      move second child to first child (4-component vector of float)

 0:42        gl_Position: direct index for structure (gl_Position 4-component vector of float)

-0:42          'anon@1' (out block{gl_Position 4-component vector of float gl_Position, gl_PointSize float gl_PointSize, out 1-element array of float gl_ClipDistance})

+0:42          'anon@0' (out block{gl_Position 4-component vector of float gl_Position, gl_PointSize float gl_PointSize, out 3-element array of float gl_ClipDistance})

 0:42          Constant:

 0:42            0 (const uint)

 0:42        'p' (4-component vector of float)

 0:43      move second child to first child (float)

 0:43        gl_PointSize: direct index for structure (gl_PointSize float)

-0:43          'anon@1' (out block{gl_Position 4-component vector of float gl_Position, gl_PointSize float gl_PointSize, out 1-element array of float gl_ClipDistance})

+0:43          'anon@0' (out block{gl_Position 4-component vector of float gl_Position, gl_PointSize float gl_PointSize, out 3-element array of float gl_ClipDistance})

 0:43          Constant:

 0:43            1 (const uint)

 0:43        'ps' (float)

diff --git a/Test/baseResults/cppSimple.vert.out b/Test/baseResults/cppSimple.vert.out
index 4bc0870..75b14e5 100644
--- a/Test/baseResults/cppSimple.vert.out
+++ b/Test/baseResults/cppSimple.vert.out
@@ -126,7 +126,7 @@
 0:65          0.050000

 0:69      move second child to first child (4-component vector of float)

 0:69        gl_Position: direct index for structure (gl_Position 4-component vector of float)

-0:69          'anon@1' (out block{gl_Position 4-component vector of float gl_Position, gl_PointSize float gl_PointSize, out implicitly-sized array of float gl_ClipDistance, gl_ClipVertex 4-component vector of float gl_ClipVertex, out 4-component vector of float gl_FrontColor, out 4-component vector of float gl_BackColor, out 4-component vector of float gl_FrontSecondaryColor, out 4-component vector of float gl_BackSecondaryColor, out implicitly-sized array of 4-component vector of float gl_TexCoord, out float gl_FogFragCoord})

+0:69          'anon@0' (out block{gl_Position 4-component vector of float gl_Position, gl_PointSize float gl_PointSize, out implicitly-sized array of float gl_ClipDistance, gl_ClipVertex 4-component vector of float gl_ClipVertex, out 4-component vector of float gl_FrontColor, out 4-component vector of float gl_BackColor, out 4-component vector of float gl_FrontSecondaryColor, out 4-component vector of float gl_BackSecondaryColor, out implicitly-sized array of 4-component vector of float gl_TexCoord, out float gl_FogFragCoord})

 0:69          Constant:

 0:69            0 (const uint)

 0:69        Construct vec4 (4-component vector of float)

@@ -166,7 +166,7 @@
 12:20034    Sequence

 12:20034      move second child to first child (4-component vector of float)

 12:20034        gl_Position: direct index for structure (gl_Position 4-component vector of float)

-12:20034          'anon@1' (out block{gl_Position 4-component vector of float gl_Position, gl_PointSize float gl_PointSize, out implicitly-sized array of float gl_ClipDistance, gl_ClipVertex 4-component vector of float gl_ClipVertex, out 4-component vector of float gl_FrontColor, out 4-component vector of float gl_BackColor, out 4-component vector of float gl_FrontSecondaryColor, out 4-component vector of float gl_BackSecondaryColor, out implicitly-sized array of 4-component vector of float gl_TexCoord, out float gl_FogFragCoord})

+12:20034          'anon@0' (out block{gl_Position 4-component vector of float gl_Position, gl_PointSize float gl_PointSize, out implicitly-sized array of float gl_ClipDistance, gl_ClipVertex 4-component vector of float gl_ClipVertex, out 4-component vector of float gl_FrontColor, out 4-component vector of float gl_BackColor, out 4-component vector of float gl_FrontSecondaryColor, out 4-component vector of float gl_BackSecondaryColor, out implicitly-sized array of 4-component vector of float gl_TexCoord, out float gl_FogFragCoord})

 12:20034          Constant:

 12:20034            0 (const uint)

 12:20034        Constant:

@@ -180,6 +180,7 @@
 12:9012      'RECURSE' (int)

 0:?   Linker Objects

 0:?     'sum' (float)

+0:?     'anon@0' (out block{gl_Position 4-component vector of float gl_Position, gl_PointSize float gl_PointSize, out implicitly-sized array of float gl_ClipDistance, gl_ClipVertex 4-component vector of float gl_ClipVertex, out 4-component vector of float gl_FrontColor, out 4-component vector of float gl_BackColor, out 4-component vector of float gl_FrontSecondaryColor, out 4-component vector of float gl_BackSecondaryColor, out implicitly-sized array of 4-component vector of float gl_TexCoord, out float gl_FogFragCoord})

 0:?     'linenumber' (int)

 0:?     'filenumber' (int)

 0:?     'version' (int)

@@ -237,7 +238,7 @@
 0:65          0.050000

 0:69      move second child to first child (4-component vector of float)

 0:69        gl_Position: direct index for structure (gl_Position 4-component vector of float)

-0:69          'anon@1' (out block{gl_Position 4-component vector of float gl_Position, gl_PointSize float gl_PointSize, out 1-element array of float gl_ClipDistance, gl_ClipVertex 4-component vector of float gl_ClipVertex, out 4-component vector of float gl_FrontColor, out 4-component vector of float gl_BackColor, out 4-component vector of float gl_FrontSecondaryColor, out 4-component vector of float gl_BackSecondaryColor, out 1-element array of 4-component vector of float gl_TexCoord, out float gl_FogFragCoord})

+0:69          'anon@0' (out block{gl_Position 4-component vector of float gl_Position, gl_PointSize float gl_PointSize, out 1-element array of float gl_ClipDistance, gl_ClipVertex 4-component vector of float gl_ClipVertex, out 4-component vector of float gl_FrontColor, out 4-component vector of float gl_BackColor, out 4-component vector of float gl_FrontSecondaryColor, out 4-component vector of float gl_BackSecondaryColor, out 1-element array of 4-component vector of float gl_TexCoord, out float gl_FogFragCoord})

 0:69          Constant:

 0:69            0 (const uint)

 0:69        Construct vec4 (4-component vector of float)

@@ -277,7 +278,7 @@
 12:20034    Sequence

 12:20034      move second child to first child (4-component vector of float)

 12:20034        gl_Position: direct index for structure (gl_Position 4-component vector of float)

-12:20034          'anon@1' (out block{gl_Position 4-component vector of float gl_Position, gl_PointSize float gl_PointSize, out 1-element array of float gl_ClipDistance, gl_ClipVertex 4-component vector of float gl_ClipVertex, out 4-component vector of float gl_FrontColor, out 4-component vector of float gl_BackColor, out 4-component vector of float gl_FrontSecondaryColor, out 4-component vector of float gl_BackSecondaryColor, out 1-element array of 4-component vector of float gl_TexCoord, out float gl_FogFragCoord})

+12:20034          'anon@0' (out block{gl_Position 4-component vector of float gl_Position, gl_PointSize float gl_PointSize, out 1-element array of float gl_ClipDistance, gl_ClipVertex 4-component vector of float gl_ClipVertex, out 4-component vector of float gl_FrontColor, out 4-component vector of float gl_BackColor, out 4-component vector of float gl_FrontSecondaryColor, out 4-component vector of float gl_BackSecondaryColor, out 1-element array of 4-component vector of float gl_TexCoord, out float gl_FogFragCoord})

 12:20034          Constant:

 12:20034            0 (const uint)

 12:20034        Constant:

@@ -291,6 +292,7 @@
 12:9012      'RECURSE' (int)

 0:?   Linker Objects

 0:?     'sum' (float)

+0:?     'anon@0' (out block{gl_Position 4-component vector of float gl_Position, gl_PointSize float gl_PointSize, out 1-element array of float gl_ClipDistance, gl_ClipVertex 4-component vector of float gl_ClipVertex, out 4-component vector of float gl_FrontColor, out 4-component vector of float gl_BackColor, out 4-component vector of float gl_FrontSecondaryColor, out 4-component vector of float gl_BackSecondaryColor, out 1-element array of 4-component vector of float gl_TexCoord, out float gl_FogFragCoord})

 0:?     'linenumber' (int)

 0:?     'filenumber' (int)

 0:?     'version' (int)

diff --git a/Test/baseResults/versionsClean.vert.out b/Test/baseResults/versionsClean.vert.out
index e19e42a..f275333 100644
--- a/Test/baseResults/versionsClean.vert.out
+++ b/Test/baseResults/versionsClean.vert.out
@@ -8,7 +8,7 @@
 0:42    Sequence

 0:42      move second child to first child (4-component vector of float)

 0:42        gl_Position: direct index for structure (gl_Position 4-component vector of float)

-0:42          'anon@1' (out block{gl_Position 4-component vector of float gl_Position, gl_PointSize float gl_PointSize, out implicitly-sized array of float gl_ClipDistance, gl_ClipVertex 4-component vector of float gl_ClipVertex, out 4-component vector of float gl_FrontColor, out 4-component vector of float gl_BackColor, out 4-component vector of float gl_FrontSecondaryColor, out 4-component vector of float gl_BackSecondaryColor, out implicitly-sized array of 4-component vector of float gl_TexCoord, out float gl_FogFragCoord})

+0:42          'anon@0' (out block{gl_Position 4-component vector of float gl_Position, gl_PointSize float gl_PointSize, out implicitly-sized array of float gl_ClipDistance, gl_ClipVertex 4-component vector of float gl_ClipVertex, out 4-component vector of float gl_FrontColor, out 4-component vector of float gl_BackColor, out 4-component vector of float gl_FrontSecondaryColor, out 4-component vector of float gl_BackSecondaryColor, out implicitly-sized array of 4-component vector of float gl_TexCoord, out float gl_FogFragCoord})

 0:42          Constant:

 0:42            0 (const uint)

 0:42        Construct vec4 (4-component vector of float)

@@ -18,6 +18,7 @@
 0:?   Linker Objects

 0:?     'color' (in 3-component vector of float)

 0:?     'foo' (uniform sampler2DRect)

+0:?     'anon@0' (out block{gl_Position 4-component vector of float gl_Position, gl_PointSize float gl_PointSize, out implicitly-sized array of float gl_ClipDistance, gl_ClipVertex 4-component vector of float gl_ClipVertex, out 4-component vector of float gl_FrontColor, out 4-component vector of float gl_BackColor, out 4-component vector of float gl_FrontSecondaryColor, out 4-component vector of float gl_BackSecondaryColor, out implicitly-sized array of 4-component vector of float gl_TexCoord, out float gl_FogFragCoord})

 0:?     'gl_VertexID' (gl_VertexId int)

 0:?     'gl_InstanceID' (gl_InstanceId int)

 

@@ -32,7 +33,7 @@
 0:42    Sequence

 0:42      move second child to first child (4-component vector of float)

 0:42        gl_Position: direct index for structure (gl_Position 4-component vector of float)

-0:42          'anon@1' (out block{gl_Position 4-component vector of float gl_Position, gl_PointSize float gl_PointSize, out 1-element array of float gl_ClipDistance, gl_ClipVertex 4-component vector of float gl_ClipVertex, out 4-component vector of float gl_FrontColor, out 4-component vector of float gl_BackColor, out 4-component vector of float gl_FrontSecondaryColor, out 4-component vector of float gl_BackSecondaryColor, out 1-element array of 4-component vector of float gl_TexCoord, out float gl_FogFragCoord})

+0:42          'anon@0' (out block{gl_Position 4-component vector of float gl_Position, gl_PointSize float gl_PointSize, out 1-element array of float gl_ClipDistance, gl_ClipVertex 4-component vector of float gl_ClipVertex, out 4-component vector of float gl_FrontColor, out 4-component vector of float gl_BackColor, out 4-component vector of float gl_FrontSecondaryColor, out 4-component vector of float gl_BackSecondaryColor, out 1-element array of 4-component vector of float gl_TexCoord, out float gl_FogFragCoord})

 0:42          Constant:

 0:42            0 (const uint)

 0:42        Construct vec4 (4-component vector of float)

@@ -42,6 +43,7 @@
 0:?   Linker Objects

 0:?     'color' (in 3-component vector of float)

 0:?     'foo' (uniform sampler2DRect)

+0:?     'anon@0' (out block{gl_Position 4-component vector of float gl_Position, gl_PointSize float gl_PointSize, out 1-element array of float gl_ClipDistance, gl_ClipVertex 4-component vector of float gl_ClipVertex, out 4-component vector of float gl_FrontColor, out 4-component vector of float gl_BackColor, out 4-component vector of float gl_FrontSecondaryColor, out 4-component vector of float gl_BackSecondaryColor, out 1-element array of 4-component vector of float gl_TexCoord, out float gl_FogFragCoord})

 0:?     'gl_VertexID' (gl_VertexId int)

 0:?     'gl_InstanceID' (gl_InstanceId int)

 

diff --git a/Test/baseResults/versionsErrors.vert.out b/Test/baseResults/versionsErrors.vert.out
index 05ff22c..e7d8134 100644
--- a/Test/baseResults/versionsErrors.vert.out
+++ b/Test/baseResults/versionsErrors.vert.out
@@ -14,7 +14,7 @@
 0:44    Sequence

 0:44      move second child to first child (4-component vector of float)

 0:44        gl_Position: direct index for structure (gl_Position 4-component vector of float)

-0:44          'anon@1' (out block{gl_Position 4-component vector of float gl_Position, gl_PointSize float gl_PointSize, out implicitly-sized array of float gl_ClipDistance, gl_ClipVertex 4-component vector of float gl_ClipVertex, out 4-component vector of float gl_FrontColor, out 4-component vector of float gl_BackColor, out 4-component vector of float gl_FrontSecondaryColor, out 4-component vector of float gl_BackSecondaryColor, out implicitly-sized array of 4-component vector of float gl_TexCoord, out float gl_FogFragCoord})

+0:44          'anon@0' (out block{gl_Position 4-component vector of float gl_Position, gl_PointSize float gl_PointSize, out implicitly-sized array of float gl_ClipDistance, gl_ClipVertex 4-component vector of float gl_ClipVertex, out 4-component vector of float gl_FrontColor, out 4-component vector of float gl_BackColor, out 4-component vector of float gl_FrontSecondaryColor, out 4-component vector of float gl_BackSecondaryColor, out implicitly-sized array of 4-component vector of float gl_TexCoord, out float gl_FogFragCoord})

 0:44          Constant:

 0:44            0 (const uint)

 0:44        Construct vec4 (4-component vector of float)

@@ -25,6 +25,7 @@
 0:?   Linker Objects

 0:?     'color' (in 3-component vector of float)

 0:?     'foo' (uniform sampler2DRect)

+0:?     'anon@0' (out block{gl_Position 4-component vector of float gl_Position, gl_PointSize float gl_PointSize, out implicitly-sized array of float gl_ClipDistance, gl_ClipVertex 4-component vector of float gl_ClipVertex, out 4-component vector of float gl_FrontColor, out 4-component vector of float gl_BackColor, out 4-component vector of float gl_FrontSecondaryColor, out 4-component vector of float gl_BackSecondaryColor, out implicitly-sized array of 4-component vector of float gl_TexCoord, out float gl_FogFragCoord})

 0:?     'gl_VertexID' (gl_VertexId int)

 0:?     'gl_InstanceID' (gl_InstanceId int)

 

@@ -40,7 +41,7 @@
 0:44    Sequence

 0:44      move second child to first child (4-component vector of float)

 0:44        gl_Position: direct index for structure (gl_Position 4-component vector of float)

-0:44          'anon@1' (out block{gl_Position 4-component vector of float gl_Position, gl_PointSize float gl_PointSize, out 1-element array of float gl_ClipDistance, gl_ClipVertex 4-component vector of float gl_ClipVertex, out 4-component vector of float gl_FrontColor, out 4-component vector of float gl_BackColor, out 4-component vector of float gl_FrontSecondaryColor, out 4-component vector of float gl_BackSecondaryColor, out 1-element array of 4-component vector of float gl_TexCoord, out float gl_FogFragCoord})

+0:44          'anon@0' (out block{gl_Position 4-component vector of float gl_Position, gl_PointSize float gl_PointSize, out 1-element array of float gl_ClipDistance, gl_ClipVertex 4-component vector of float gl_ClipVertex, out 4-component vector of float gl_FrontColor, out 4-component vector of float gl_BackColor, out 4-component vector of float gl_FrontSecondaryColor, out 4-component vector of float gl_BackSecondaryColor, out 1-element array of 4-component vector of float gl_TexCoord, out float gl_FogFragCoord})

 0:44          Constant:

 0:44            0 (const uint)

 0:44        Construct vec4 (4-component vector of float)

@@ -51,6 +52,7 @@
 0:?   Linker Objects

 0:?     'color' (in 3-component vector of float)

 0:?     'foo' (uniform sampler2DRect)

+0:?     'anon@0' (out block{gl_Position 4-component vector of float gl_Position, gl_PointSize float gl_PointSize, out 1-element array of float gl_ClipDistance, gl_ClipVertex 4-component vector of float gl_ClipVertex, out 4-component vector of float gl_FrontColor, out 4-component vector of float gl_BackColor, out 4-component vector of float gl_FrontSecondaryColor, out 4-component vector of float gl_BackSecondaryColor, out 1-element array of 4-component vector of float gl_TexCoord, out float gl_FogFragCoord})

 0:?     'gl_VertexID' (gl_VertexId int)

 0:?     'gl_InstanceID' (gl_InstanceId int)

 

diff --git a/glslang/MachineIndependent/ParseHelper.cpp b/glslang/MachineIndependent/ParseHelper.cpp
index c77ef85..82e9855 100644
--- a/glslang/MachineIndependent/ParseHelper.cpp
+++ b/glslang/MachineIndependent/ParseHelper.cpp
@@ -381,7 +381,11 @@
         // on first use, so that all future references will share its array structure,
         // so that editing the implicit size will effect all nodes consuming it,
         // and so that editing the implicit size won't change the shared one.
-        if (symbol->getType().containsImplicitlySizedArray())
+        //
+        // If this is a variable or a block, check it and all it contains, but if this 
+        // is a member of an anonymous block, check the whole block, as the whole block
+        // will need to be copied up if it contains an implicitly-sized array.
+        if (symbol->getType().containsImplicitlySizedArray() || (symbol->getAsAnonMember() && symbol->getAsAnonMember()->getAnonContainer().getType().containsImplicitlySizedArray()))
             makeEditable(symbol);
     }