@@ -254,9 +254,11 @@ static bool isFoldOperator(tok::TokenKind Kind) {
254254// / precedence of at least \p MinPrec.
255255ExprResult
256256Parser::ParseRHSOfBinaryExpression (ExprResult LHS, prec::Level MinPrec) {
257- prec::Level NextTokPrec = getBinOpPrecedence (Tok.getKind (),
258- GreaterThanIsOperator,
259- getLangOpts ().CPlusPlus11 );
257+ prec::Level NextTokPrec =
258+ getBinOpPrecedence (Tok.getKind (), GreaterThanIsOperator,
259+ getLangOpts ().CPlusPlus11 ||
260+ (getLangOpts ().HLSL && getLangOpts ().HLSLVersion >=
261+ hlsl::LangStd::v202x));
260262 SourceLocation ColonLoc;
261263
262264 while (1 ) {
@@ -390,8 +392,11 @@ Parser::ParseRHSOfBinaryExpression(ExprResult LHS, prec::Level MinPrec) {
390392 // Remember the precedence of this operator and get the precedence of the
391393 // operator immediately to the right of the RHS.
392394 prec::Level ThisPrec = NextTokPrec;
393- NextTokPrec = getBinOpPrecedence (Tok.getKind (), GreaterThanIsOperator,
394- getLangOpts ().CPlusPlus11 );
395+ NextTokPrec = getBinOpPrecedence (
396+ Tok.getKind (), GreaterThanIsOperator,
397+ getLangOpts ().CPlusPlus11 ||
398+ (getLangOpts ().HLSL &&
399+ getLangOpts ().HLSLVersion >= hlsl::LangStd::v202x));
395400
396401 // Assignment and conditional expressions are right-associative.
397402 bool isRightAssoc = ThisPrec == prec::Conditional ||
@@ -424,8 +429,11 @@ Parser::ParseRHSOfBinaryExpression(ExprResult LHS, prec::Level MinPrec) {
424429 LHS = ExprError ();
425430 }
426431
427- NextTokPrec = getBinOpPrecedence (Tok.getKind (), GreaterThanIsOperator,
428- getLangOpts ().CPlusPlus11 );
432+ NextTokPrec = getBinOpPrecedence (
433+ Tok.getKind (), GreaterThanIsOperator,
434+ getLangOpts ().CPlusPlus11 ||
435+ (getLangOpts ().HLSL &&
436+ getLangOpts ().HLSLVersion >= hlsl::LangStd::v202x));
429437 }
430438
431439 if (!RHS.isInvalid () && RHSIsInitList) {
0 commit comments