From ffa66d3bc7a9e966b7088ba83061b5959f9527c1 Mon Sep 17 00:00:00 2001 From: John Kessenich <cepheus@frii.com> Date: Tue, 12 Nov 2013 22:02:36 +0000 Subject: [PATCH] Disallow arrays in initializers for non-array-object versions (assignment, etc. were already caught, but not initialization). git-svn-id: https://cvs.khronos.org/svn/repos/ogl/trunk/ecosystem/public/sdk/tools/glslang@24022 e7fa87d3-cd2b-0410-9028-fcbf551c1848 --- Test/array100.frag | 1 + Test/baseResults/100.frag.out | 3 ++- Test/baseResults/array100.frag.out | 7 ++++++- glslang/MachineIndependent/ParseHelper.cpp | 1 + 4 files changed, 10 insertions(+), 2 deletions(-) diff --git a/Test/array100.frag b/Test/array100.frag index beedfeca9..b77aedf6e 100644 --- a/Test/array100.frag +++ b/Test/array100.frag @@ -66,4 +66,5 @@ void bar11() s1 = s2; // ERROR bar10(s1); s2 = bar9(); // ERROR + SB initSb = s1; // ERROR } diff --git a/Test/baseResults/100.frag.out b/Test/baseResults/100.frag.out index 1c08f355f..9a5c37e50 100644 --- a/Test/baseResults/100.frag.out +++ b/Test/baseResults/100.frag.out @@ -1,5 +1,6 @@ ERROR: 0:3: '{ } style initializers' : not supported with this profile: es ERROR: 0:3: 'initializer' : not supported for this version or the enabled extensions +ERROR: 0:3: 'array initializer' : not supported for this version or the enabled extensions ERROR: 0:7: 'attribute' : not supported in this stage: fragment ERROR: 0:7: 'float' : type requires declaration of default precision qualifier ERROR: 0:9: '=' : cannot convert from 'const int' to 'mediump float' @@ -60,7 +61,7 @@ ERROR: 0:144: 'a' : redefinition ERROR: 0:149: 'floating-point suffix' : not supported for this version or the enabled extensions ERROR: 0:150: 'floating-point suffix' : not supported for this version or the enabled extensions ERROR: 0:152: '' : syntax error -ERROR: 55 compilation errors. No code generated. +ERROR: 56 compilation errors. No code generated. ERROR: node is still EOpNull! 0:3 Sequence diff --git a/Test/baseResults/array100.frag.out b/Test/baseResults/array100.frag.out index 5302806a6..8223f4b45 100644 --- a/Test/baseResults/array100.frag.out +++ b/Test/baseResults/array100.frag.out @@ -19,7 +19,8 @@ ERROR: 0:39: '[' : index out of range '-1' ERROR: 0:53: 'array in function return type' : not supported for this version or the enabled extensions ERROR: 0:66: 'array assignment' : not supported for this version or the enabled extensions ERROR: 0:68: 'array assignment' : not supported for this version or the enabled extensions -ERROR: 21 compilation errors. No code generated. +ERROR: 0:69: 'array initializer' : not supported for this version or the enabled extensions +ERROR: 22 compilation errors. No code generated. ERROR: node is still EOpNull! 0:9 Function Definition: foo(f1[5]; (4-element array of mediump float) @@ -143,6 +144,10 @@ ERROR: node is still EOpNull! 0:68 move second child to first child (structure{v4,sa}) 0:68 's2' (structure{v4,sa}) 0:68 Function Call: bar9( (structure{v4,sa}) +0:69 Sequence +0:69 move second child to first child (structure{v4,sa}) +0:69 'initSb' (structure{v4,sa}) +0:69 's1' (structure{v4,sa}) 0:? Linker Objects 0:? 'gu' (unsized array of mediump float) 0:? 'g4' (4-element array of mediump float) diff --git a/glslang/MachineIndependent/ParseHelper.cpp b/glslang/MachineIndependent/ParseHelper.cpp index f23b37e9f..765c8858d 100644 --- a/glslang/MachineIndependent/ParseHelper.cpp +++ b/glslang/MachineIndependent/ParseHelper.cpp @@ -2927,6 +2927,7 @@ TIntermNode* TParseContext::executeInitializer(TSourceLoc loc, TString& identifi error(loc, " cannot initialize this type of qualifier ", variable->getType().getStorageQualifierString(), ""); return 0; } + arrayObjectCheck(loc, variable->getType(), "array initializer"); // // If the initializer was from braces { ... }, we convert the whole subtree to a -- GitLab