@@ -3594,52 +3594,54 @@ abstract class StylesheetParser extends Parser {
35943594 buffer.writeCharCode ($lparen);
35953595 whitespace ();
35963596
3597- var needsParenDeprecation = scanner.peekChar () == $lparen;
3598- var needsNotDeprecation = matchesIdentifier ("not" );
3599-
3600- var expression = _expressionUntilComparison ();
3601- if (needsParenDeprecation || needsNotDeprecation) {
3602- logger.warn (
3603- 'Starting a @media query with "${needsParenDeprecation ? '(' : 'not' }" '
3604- "is deprecated because it conflicts with official CSS syntax.\n "
3605- "\n "
3606- "To preserve existing behavior: #{$expression }\n "
3607- 'To migrate to new behavior: #{"$expression "}\n '
3608- "\n "
3609- "For details, see https://sass-lang.com/d/media-logic" ,
3610- span: expression.span,
3611- deprecation: true );
3612- }
3613-
3614- buffer.add (expression);
3615- if (scanner.scanChar ($colon)) {
3597+ if (scanner.peekChar () == $lparen) {
3598+ _mediaInParens (buffer);
36163599 whitespace ();
3617- buffer.writeCharCode ($colon);
3618- buffer.writeCharCode ($space);
3619- buffer.add (_expression ());
3600+ if (scanIdentifier ("and" )) {
3601+ buffer.write (" and " );
3602+ expectWhitespace ();
3603+ _mediaLogicSequence (buffer, "and" );
3604+ } else if (scanIdentifier ("or" )) {
3605+ buffer.write (" or " );
3606+ expectWhitespace ();
3607+ _mediaLogicSequence (buffer, "or" );
3608+ }
3609+ } else if (scanIdentifier ("not" )) {
3610+ buffer.write ("not " );
3611+ expectWhitespace ();
3612+ _mediaOrInterp (buffer);
36203613 } else {
3621- var next = scanner.peekChar ();
3622- if (next == $langle || next == $rangle || next == $equal) {
3623- buffer.writeCharCode ($space);
3624- buffer.writeCharCode (scanner.readChar ());
3625- if ((next == $langle || next == $rangle) && scanner.scanChar ($equal)) {
3626- buffer.writeCharCode ($equal);
3627- }
3628- buffer.writeCharCode ($space);
3629-
3614+ buffer.add (_expressionUntilComparison ());
3615+ if (scanner.scanChar ($colon)) {
36303616 whitespace ();
3631- buffer.add (_expressionUntilComparison ());
3632-
3633- if ((next == $langle || next == $rangle) &&
3634- // dart-lang/sdk#45356
3635- scanner.scanChar (next! )) {
3617+ buffer.writeCharCode ($colon);
3618+ buffer.writeCharCode ($space);
3619+ buffer.add (_expression ());
3620+ } else {
3621+ var next = scanner.peekChar ();
3622+ if (next == $langle || next == $rangle || next == $equal) {
36363623 buffer.writeCharCode ($space);
3637- buffer.writeCharCode (next);
3638- if (scanner.scanChar ($equal)) buffer.writeCharCode ($equal);
3624+ buffer.writeCharCode (scanner.readChar ());
3625+ if ((next == $langle || next == $rangle) &&
3626+ scanner.scanChar ($equal)) {
3627+ buffer.writeCharCode ($equal);
3628+ }
36393629 buffer.writeCharCode ($space);
36403630
36413631 whitespace ();
36423632 buffer.add (_expressionUntilComparison ());
3633+
3634+ if ((next == $langle || next == $rangle) &&
3635+ // dart-lang/sdk#45356
3636+ scanner.scanChar (next! )) {
3637+ buffer.writeCharCode ($space);
3638+ buffer.writeCharCode (next);
3639+ if (scanner.scanChar ($equal)) buffer.writeCharCode ($equal);
3640+ buffer.writeCharCode ($space);
3641+
3642+ whitespace ();
3643+ buffer.add (_expressionUntilComparison ());
3644+ }
36433645 }
36443646 }
36453647 }
0 commit comments