Commit 27ffb299 by John Kessenich

HLSL: Add 'class' keyword as (so far) synonym for 'struct'.

parent c18cae21
...@@ -12,7 +12,7 @@ struct myS { ...@@ -12,7 +12,7 @@ struct myS {
myS s1; myS s1;
static struct { static class {
float4 i; float4 i;
} s2; } s2;
...@@ -32,7 +32,7 @@ float ff6 : packoffset(c102.y) : register(s3[5]); ...@@ -32,7 +32,7 @@ float ff6 : packoffset(c102.y) : register(s3[5]);
float4 PixelShaderFunction(float4 input, IN_S s) : COLOR0 float4 PixelShaderFunction(float4 input, IN_S s) : COLOR0
{ {
struct FS { class FS {
bool3 b3; bool3 b3;
} s3; } s3;
......
...@@ -2,5 +2,5 @@ ...@@ -2,5 +2,5 @@
// For the version, it uses the latest git tag followed by the number of commits. // For the version, it uses the latest git tag followed by the number of commits.
// For the date, it uses the current date (when then script is run). // For the date, it uses the current date (when then script is run).
#define GLSLANG_REVISION "Overload400-PrecQual.1871" #define GLSLANG_REVISION "Overload400-PrecQual.1874"
#define GLSLANG_DATE "02-Mar-2017" #define GLSLANG_DATE "03-Mar-2017"
...@@ -1259,6 +1259,7 @@ bool HlslGrammar::acceptType(TType& type) ...@@ -1259,6 +1259,7 @@ bool HlslGrammar::acceptType(TType& type)
return acceptStructBufferType(type); return acceptStructBufferType(type);
break; break;
case EHTokClass:
case EHTokStruct: case EHTokStruct:
case EHTokCBuffer: case EHTokCBuffer:
case EHTokTBuffer: case EHTokTBuffer:
...@@ -1732,6 +1733,7 @@ bool HlslGrammar::acceptType(TType& type) ...@@ -1732,6 +1733,7 @@ bool HlslGrammar::acceptType(TType& type)
// //
// struct_type // struct_type
// : STRUCT // : STRUCT
// | CLASS
// | CBUFFER // | CBUFFER
// | TBUFFER // | TBUFFER
// //
...@@ -1747,8 +1749,9 @@ bool HlslGrammar::acceptStruct(TType& type) ...@@ -1747,8 +1749,9 @@ bool HlslGrammar::acceptStruct(TType& type)
// TBUFFER // TBUFFER
else if (acceptTokenClass(EHTokTBuffer)) else if (acceptTokenClass(EHTokTBuffer))
storageQualifier = EvqBuffer; storageQualifier = EvqBuffer;
// CLASS
// STRUCT // STRUCT
else if (! acceptTokenClass(EHTokStruct)) else if (! acceptTokenClass(EHTokClass) && ! acceptTokenClass(EHTokStruct))
return false; return false;
// IDENTIFIER // IDENTIFIER
......
...@@ -327,6 +327,7 @@ void HlslScanContext::fillInKeywordMap() ...@@ -327,6 +327,7 @@ void HlslScanContext::fillInKeywordMap()
(*KeywordMap)["RWStructuredBuffer"] = EHTokRWStructuredBuffer; (*KeywordMap)["RWStructuredBuffer"] = EHTokRWStructuredBuffer;
(*KeywordMap)["StructuredBuffer"] = EHTokStructuredBuffer; (*KeywordMap)["StructuredBuffer"] = EHTokStructuredBuffer;
(*KeywordMap)["class"] = EHTokClass;
(*KeywordMap)["struct"] = EHTokStruct; (*KeywordMap)["struct"] = EHTokStruct;
(*KeywordMap)["cbuffer"] = EHTokCBuffer; (*KeywordMap)["cbuffer"] = EHTokCBuffer;
(*KeywordMap)["tbuffer"] = EHTokTBuffer; (*KeywordMap)["tbuffer"] = EHTokTBuffer;
...@@ -354,7 +355,6 @@ void HlslScanContext::fillInKeywordMap() ...@@ -354,7 +355,6 @@ void HlslScanContext::fillInKeywordMap()
ReservedSet->insert("auto"); ReservedSet->insert("auto");
ReservedSet->insert("catch"); ReservedSet->insert("catch");
ReservedSet->insert("char"); ReservedSet->insert("char");
ReservedSet->insert("class");
ReservedSet->insert("const_cast"); ReservedSet->insert("const_cast");
ReservedSet->insert("enum"); ReservedSet->insert("enum");
ReservedSet->insert("explicit"); ReservedSet->insert("explicit");
...@@ -740,6 +740,7 @@ EHlslTokenClass HlslScanContext::tokenizeIdentifier() ...@@ -740,6 +740,7 @@ EHlslTokenClass HlslScanContext::tokenizeIdentifier()
return keyword; return keyword;
// variable, user type, ... // variable, user type, ...
case EHTokClass:
case EHTokStruct: case EHTokStruct:
case EHTokTypedef: case EHTokTypedef:
case EHTokCBuffer: case EHTokCBuffer:
......
...@@ -268,6 +268,7 @@ enum EHlslTokenClass { ...@@ -268,6 +268,7 @@ enum EHlslTokenClass {
// variable, user type, ... // variable, user type, ...
EHTokIdentifier, EHTokIdentifier,
EHTokTypeName, EHTokTypeName,
EHTokClass,
EHTokStruct, EHTokStruct,
EHTokCBuffer, EHTokCBuffer,
EHTokTBuffer, EHTokTBuffer,
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment