@@ -65,6 +65,7 @@ static void parse_statement (void);
65
65
static operand parse_assignment_expression (bool );
66
66
static void parse_source_element_list (bool );
67
67
static operand parse_argument_list (varg_list_type, operand, uint8_t *, operand *);
68
+ static void process_keyword_names (void );
68
69
static void skip_braces (void );
69
70
static void skip_parens (void );
70
71
@@ -2463,62 +2464,70 @@ skip_optional_name_and_parens (void)
2463
2464
}
2464
2465
}
2465
2466
2466
- static void
2467
- skip_braces (void )
2467
+ static void process_keyword_names ()
2468
2468
{
2469
- current_token_must_be (TOK_OPEN_BRACE);
2470
-
2471
- uint8_t nesting_level = 1 ;
2472
- while (nesting_level > 0 )
2469
+ if (token_is (TOK_KEYWORD))
2473
2470
{
2471
+ keyword kw = (keyword) token_data ();
2474
2472
skip_newlines ();
2475
- if (token_is (TOK_OPEN_BRACE ))
2473
+ if (token_is (TOK_COLON ))
2476
2474
{
2477
- nesting_level++;
2475
+ lexer_add_keyword_or_numeric_literal_if_not_present (
2476
+ create_literal_from_str_compute_len (lexer_keyword_to_string (kw)));
2478
2477
}
2479
- else if ( token_is (TOK_CLOSE_BRACE))
2478
+ else
2480
2479
{
2481
- nesting_level-- ;
2480
+ lexer_save_token (tok) ;
2482
2481
}
2483
- else if (token_is (TOK_KEYWORD))
2482
+ }
2483
+ else if (token_is (TOK_NAME))
2484
+ {
2485
+ if (literal_equal_type_s (lexer_get_literal_by_id (token_data ()), " get" )
2486
+ || literal_equal_type_s (lexer_get_literal_by_id (token_data ()), " set" ))
2484
2487
{
2485
- keyword kw = (keyword) token_data ();
2486
2488
skip_newlines ();
2487
- if (token_is (TOK_COLON))
2488
- {
2489
- lexer_add_keyword_or_numeric_literal_if_not_present (
2490
- create_literal_from_str_compute_len (lexer_keyword_to_string (kw)));
2491
- }
2492
- else
2493
- {
2494
- lexer_save_token (tok);
2495
- }
2496
- }
2497
- else if (token_is (TOK_NAME))
2498
- {
2499
- if (literal_equal_type_s (lexer_get_literal_by_id (token_data ()), " get" )
2500
- || literal_equal_type_s (lexer_get_literal_by_id (token_data ()), " set" ))
2489
+ if (token_is (TOK_KEYWORD))
2501
2490
{
2491
+ keyword kw = (keyword) token_data ();
2502
2492
skip_newlines ();
2503
- if (token_is (TOK_KEYWORD ))
2493
+ if (token_is (TOK_OPEN_PAREN ))
2504
2494
{
2505
- keyword kw = (keyword) token_data ();
2506
- skip_newlines ();
2507
- if (token_is (TOK_OPEN_PAREN))
2508
- {
2509
- lexer_add_keyword_or_numeric_literal_if_not_present (
2510
- create_literal_from_str_compute_len (lexer_keyword_to_string (kw)));
2511
- }
2512
- else
2513
- {
2514
- lexer_save_token (tok);
2515
- }
2495
+ lexer_add_keyword_or_numeric_literal_if_not_present (
2496
+ create_literal_from_str_compute_len (lexer_keyword_to_string (kw)));
2516
2497
}
2517
2498
else
2518
2499
{
2519
2500
lexer_save_token (tok);
2520
2501
}
2521
2502
}
2503
+ else
2504
+ {
2505
+ lexer_save_token (tok);
2506
+ }
2507
+ }
2508
+ }
2509
+ }
2510
+
2511
+ static void
2512
+ skip_braces (void )
2513
+ {
2514
+ current_token_must_be (TOK_OPEN_BRACE);
2515
+
2516
+ uint8_t nesting_level = 1 ;
2517
+ while (nesting_level > 0 )
2518
+ {
2519
+ skip_newlines ();
2520
+ if (token_is (TOK_OPEN_BRACE))
2521
+ {
2522
+ nesting_level++;
2523
+ }
2524
+ else if (token_is (TOK_CLOSE_BRACE))
2525
+ {
2526
+ nesting_level--;
2527
+ }
2528
+ else
2529
+ {
2530
+ process_keyword_names ();
2522
2531
}
2523
2532
}
2524
2533
}
@@ -2649,9 +2658,18 @@ preparse_scope (bool is_global)
2649
2658
2650
2659
dump_reg_var_decl_for_rewrite ();
2651
2660
2652
- while (!token_is (end_tt))
2661
+ size_t nesting_level = 0 ;
2662
+ while (nesting_level > 0 || !token_is (end_tt))
2653
2663
{
2654
- if (is_keyword (KW_VAR))
2664
+ if (token_is (TOK_OPEN_BRACE))
2665
+ {
2666
+ nesting_level++;
2667
+ }
2668
+ else if (token_is (TOK_CLOSE_BRACE))
2669
+ {
2670
+ nesting_level--;
2671
+ }
2672
+ else if (is_keyword (KW_VAR))
2655
2673
{
2656
2674
preparse_var_decls ();
2657
2675
}
@@ -2663,6 +2681,10 @@ preparse_scope (bool is_global)
2663
2681
{
2664
2682
skip_braces ();
2665
2683
}
2684
+ else
2685
+ {
2686
+ process_keyword_names ();
2687
+ }
2666
2688
skip_newlines ();
2667
2689
}
2668
2690
0 commit comments