@@ -586,6 +586,58 @@ def test_spaces_at_eof
586586 assert_lexer ( expected , code )
587587 end
588588
589+ def test_fluent_and
590+ code = "foo\n " "and"
591+ expected = [
592+ [ [ 1 , 0 ] , :on_ident , "foo" , state ( :EXPR_CMDARG ) ] ,
593+ [ [ 1 , 3 ] , :on_ignored_nl , "\n " , state ( :EXPR_CMDARG ) ] ,
594+ [ [ 2 , 0 ] , :on_kw , "and" , state ( :EXPR_BEG ) ] ,
595+ ]
596+ assert_lexer ( expected , code )
597+
598+ code = "foo\n " "and?"
599+ expected = [
600+ [ [ 1 , 0 ] , :on_ident , "foo" , state ( :EXPR_CMDARG ) ] ,
601+ [ [ 1 , 3 ] , :on_nl , "\n " , state ( :EXPR_BEG ) ] ,
602+ [ [ 2 , 0 ] , :on_ident , "and?" , state ( :EXPR_CMDARG ) ] ,
603+ ]
604+ assert_lexer ( expected , code )
605+
606+ code = "foo\n " "and!"
607+ expected = [
608+ [ [ 1 , 0 ] , :on_ident , "foo" , state ( :EXPR_CMDARG ) ] ,
609+ [ [ 1 , 3 ] , :on_nl , "\n " , state ( :EXPR_BEG ) ] ,
610+ [ [ 2 , 0 ] , :on_ident , "and!" , state ( :EXPR_CMDARG ) ] ,
611+ ]
612+ assert_lexer ( expected , code )
613+ end
614+
615+ def test_fluent_or
616+ code = "foo\n " "or"
617+ expected = [
618+ [ [ 1 , 0 ] , :on_ident , "foo" , state ( :EXPR_CMDARG ) ] ,
619+ [ [ 1 , 3 ] , :on_ignored_nl , "\n " , state ( :EXPR_CMDARG ) ] ,
620+ [ [ 2 , 0 ] , :on_kw , "or" , state ( :EXPR_BEG ) ] ,
621+ ]
622+ assert_lexer ( expected , code )
623+
624+ code = "foo\n " "or?"
625+ expected = [
626+ [ [ 1 , 0 ] , :on_ident , "foo" , state ( :EXPR_CMDARG ) ] ,
627+ [ [ 1 , 3 ] , :on_nl , "\n " , state ( :EXPR_BEG ) ] ,
628+ [ [ 2 , 0 ] , :on_ident , "or?" , state ( :EXPR_CMDARG ) ] ,
629+ ]
630+ assert_lexer ( expected , code )
631+
632+ code = "foo\n " "or!"
633+ expected = [
634+ [ [ 1 , 0 ] , :on_ident , "foo" , state ( :EXPR_CMDARG ) ] ,
635+ [ [ 1 , 3 ] , :on_nl , "\n " , state ( :EXPR_BEG ) ] ,
636+ [ [ 2 , 0 ] , :on_ident , "or!" , state ( :EXPR_CMDARG ) ] ,
637+ ]
638+ assert_lexer ( expected , code )
639+ end
640+
589641 def assert_lexer ( expected , code )
590642 assert_equal ( code , Ripper . tokenize ( code ) . join ( "" ) )
591643 assert_equal ( expected , result = Ripper . lex ( code ) ,
0 commit comments