@@ -7,7 +7,7 @@ use rustc_hash::{FxBuildHasher, FxHashSet};
77use ruff_python_ast:: name:: Name ;
88use ruff_python_ast:: {
99 self as ast, BoolOp , CmpOp , ConversionFlag , Expr , ExprContext , FStringElement , FStringElements ,
10- IpyEscapeKind , Number , Operator , StringFlags , UnaryOp ,
10+ IpyEscapeKind , Number , Operator , PythonVersion , StringFlags , UnaryOp ,
1111} ;
1212use ruff_text_size:: { Ranged , TextLen , TextRange , TextSize } ;
1313
@@ -16,7 +16,7 @@ use crate::parser::{helpers, FunctionKind, Parser};
1616use crate :: string:: { parse_fstring_literal_element, parse_string_literal, StringType } ;
1717use crate :: token:: { TokenKind , TokenValue } ;
1818use crate :: token_set:: TokenSet ;
19- use crate :: { FStringErrorType , Mode , ParseErrorType } ;
19+ use crate :: { FStringErrorType , Mode , ParseErrorType , SyntaxError , SyntaxErrorKind } ;
2020
2121use super :: { FStringElementsKind , Parenthesized , RecoveryContextKind } ;
2222
@@ -2161,10 +2161,20 @@ impl<'src> Parser<'src> {
21612161
21622162 let value = self . parse_conditional_expression_or_higher ( ) ;
21632163
2164+ let range = self . node_range ( start) ;
2165+
2166+ if self . options . target_version < PythonVersion :: PY38 {
2167+ self . syntax_errors . push ( SyntaxError {
2168+ kind : SyntaxErrorKind :: WalrusBeforePy38 ,
2169+ range,
2170+ target_version : self . options . target_version ,
2171+ } ) ;
2172+ }
2173+
21642174 ast:: ExprNamed {
21652175 target : Box :: new ( target) ,
21662176 value : Box :: new ( value. expr ) ,
2167- range : self . node_range ( start ) ,
2177+ range,
21682178 }
21692179 }
21702180
0 commit comments