From a01feffa83654641993a66899fd1890c616ce236 Mon Sep 17 00:00:00 2001 From: Matthew Flatt Date: Sat, 18 Aug 2018 09:07:56 -0600 Subject: [PATCH] expander: improve error reporting for definitions without expression Closes #2183 --- .../racket-test-core/tests/racket/syntax.rktl | 9 + racket/src/expander/expand/body.rkt | 6 +- racket/src/racket/src/startup.inc | 591 +++++++++--------- 3 files changed, 313 insertions(+), 293 deletions(-) diff --git a/pkgs/racket-test-core/tests/racket/syntax.rktl b/pkgs/racket-test-core/tests/racket/syntax.rktl index edb3c47d33..8113979396 100644 --- a/pkgs/racket-test-core/tests/racket/syntax.rktl +++ b/pkgs/racket-test-core/tests/racket/syntax.rktl @@ -868,6 +868,15 @@ (test 5 'implicit-begin (let () (begin) 10 5)) +;; Check that expansion-introduced `let-values` is not mentioned in +;; the error message +(define (exn:begin-possibly-implicit? x) + (and (exn? x) + (regexp-match? #rx"begin .possibly implicit." (exn-message x)))) +(error-test #'(let () (define x 0)) exn:begin-possibly-implicit?) +(error-test #'(let () (struct a ())) exn:begin-possibly-implicit?) +(error-test #'(cond [#t (define x 0)]) exn:begin-possibly-implicit?) + ;; Weird test: check that `eval` does not wrap its last argument ;; in a prompt, which means that `(foo 10)` replaces the continuation ;; that would check for an error diff --git a/racket/src/expander/expand/body.rkt b/racket/src/expander/expand/body.rkt index 082d5f3a74..e0c060c2da 100644 --- a/racket/src/expander/expand/body.rkt +++ b/racket/src/expander/expand/body.rkt @@ -85,6 +85,7 @@ (finish-expanding-body body-ctx frame-id def-ctx-scopes (reverse val-idss) (reverse val-keyss) (reverse val-rhss) (reverse track-stxs) (reverse stx-clauses) (reverse done-bodys) + #:original-bodys init-bodys #:source s #:stratified? stratified? #:name name @@ -228,12 +229,15 @@ (define (finish-expanding-body body-ctx frame-id def-ctx-scopes val-idss val-keyss val-rhss track-stxs stx-clauses done-bodys + #:original-bodys init-bodys #:source s #:stratified? stratified? #:name name #:disappeared-transformer-bindings disappeared-transformer-bindings) (when (null? done-bodys) - (raise-syntax-error #f "no expression after a sequence of internal definitions" s)) + (raise-syntax-error (string->symbol "begin (possibly implicit)") + "no expression after a sequence of internal definitions" + (datum->syntax #f (cons 'begin init-bodys) s))) ;; As we finish expanding, we're no longer in a definition context (define finish-ctx (struct*-copy expand-context (accumulate-def-ctx-scopes body-ctx def-ctx-scopes) [context 'expression] diff --git a/racket/src/racket/src/startup.inc b/racket/src/racket/src/startup.inc index 4f69584a42..5567c39295 100644 --- a/racket/src/racket/src/startup.inc +++ b/racket/src/racket/src/startup.inc @@ -61391,40 +61391,40 @@ static const char *startup_source = "(let-values(((v_0) ctx_0))" "(let-values(((the-struct_0) v_0))" "(if(expand-context/outer? the-struct_0)" -"(let-values(((context51_0)(list(make-liberal-define-context)))" -"((name52_0) #f)" -"((only-immediate?53_0) #t)" -"((def-ctx-scopes54_0) def-ctx-scopes_0)" -"((post-expansion55_0)" +"(let-values(((context53_0)(list(make-liberal-define-context)))" +"((name54_0) #f)" +"((only-immediate?55_0) #t)" +"((def-ctx-scopes56_0) def-ctx-scopes_0)" +"((post-expansion57_0)" "(lambda(s_1)" "(begin" -" 'post-expansion55" +" 'post-expansion57" "(add-scope s_1 inside-sc_0))))" -"((scopes56_0)" +"((scopes58_0)" "(cons inside-sc_0(expand-context-scopes ctx_0)))" -"((use-site-scopes57_0)(box null))" -"((frame-id58_0) frame-id_0)" -"((reference-records59_0)" +"((use-site-scopes59_0)(box null))" +"((frame-id60_0) frame-id_0)" +"((reference-records61_0)" "(cons" " frame-id_0" "(expand-context-reference-records ctx_0)))" -"((inner60_0)(root-expand-context/outer-inner v_0)))" +"((inner62_0)(root-expand-context/outer-inner v_0)))" "(expand-context/outer1.1" -" inner60_0" -" post-expansion55_0" -" use-site-scopes57_0" -" frame-id58_0" -" context51_0" +" inner62_0" +" post-expansion57_0" +" use-site-scopes59_0" +" frame-id60_0" +" context53_0" "(expand-context/outer-env the-struct_0)" -" scopes56_0" -" def-ctx-scopes54_0" +" scopes58_0" +" def-ctx-scopes56_0" "(expand-context/outer-binding-layer the-struct_0)" -" reference-records59_0" -" only-immediate?53_0" +" reference-records61_0" +" only-immediate?55_0" "(expand-context/outer-need-eventually-defined the-struct_0)" "(expand-context/outer-current-introduction-scopes the-struct_0)" "(expand-context/outer-current-use-scopes the-struct_0)" -" name52_0))" +" name54_0))" "(raise-argument-error" " 'struct-copy" " \"expand-context/outer?\"" @@ -61454,33 +61454,35 @@ static const char *startup_source = " 'loop" "(if(null? bodys_1)" "(let-values()" -"(let-values(((body-ctx61_0) body-ctx_1)" -"((frame-id62_0) frame-id_0)" -"((def-ctx-scopes63_0) def-ctx-scopes_0)" -"((temp64_0)(reverse$1 val-idss_0))" -"((temp65_0)(reverse$1 val-keyss_0))" -"((temp66_0)(reverse$1 val-rhss_0))" -"((temp67_0)(reverse$1 track-stxs_0))" -"((temp68_0)(reverse$1 stx-clauses_0))" -"((temp69_0)(reverse$1 done-bodys_0))" -"((s70_0) s_0)" -"((stratified?71_0) stratified?_0)" -"((name72_0) name_0)" -"((temp73_0)(reverse$1 trans-idss_0)))" -"(finish-expanding-body27.1" -" temp73_0" -" name72_0" -" s70_0" -" stratified?71_0" -" body-ctx61_0" -" frame-id62_0" -" def-ctx-scopes63_0" -" temp64_0" -" temp65_0" +"(let-values(((body-ctx63_0) body-ctx_1)" +"((frame-id64_0) frame-id_0)" +"((def-ctx-scopes65_0) def-ctx-scopes_0)" +"((temp66_0)(reverse$1 val-idss_0))" +"((temp67_0)(reverse$1 val-keyss_0))" +"((temp68_0)(reverse$1 val-rhss_0))" +"((temp69_0)(reverse$1 track-stxs_0))" +"((temp70_0)(reverse$1 stx-clauses_0))" +"((temp71_0)(reverse$1 done-bodys_0))" +"((init-bodys72_0) init-bodys_0)" +"((s73_0) s_0)" +"((stratified?74_0) stratified?_0)" +"((name75_0) name_0)" +"((temp76_0)(reverse$1 trans-idss_0)))" +"(finish-expanding-body29.1" +" temp76_0" +" name75_0" +" init-bodys72_0" +" s73_0" +" stratified?74_0" +" body-ctx63_0" +" frame-id64_0" +" def-ctx-scopes65_0" " temp66_0" " temp67_0" " temp68_0" -" temp69_0)))" +" temp69_0" +" temp70_0" +" temp71_0)))" "(let-values()" "(let-values(((rest-bodys_0)(cdr bodys_1)))" "(let-values((()" @@ -61497,8 +61499,8 @@ static const char *startup_source = "(void)))" "(values))))" "(let-values(((exp-body_0)" -"(let-values(((temp74_0)(car bodys_1))" -"((temp75_0)" +"(let-values(((temp77_0)(car bodys_1))" +"((temp78_0)" "(if(if name_0" "(null?" "(cdr bodys_1))" @@ -61509,13 +61511,13 @@ static const char *startup_source = " v_0))" "(if(expand-context/outer?" " the-struct_0)" -"(let-values(((name76_0)" +"(let-values(((name79_0)" " name_0)" -"((inner77_0)" +"((inner80_0)" "(root-expand-context/outer-inner" " v_0)))" "(expand-context/outer1.1" -" inner77_0" +" inner80_0" "(root-expand-context/outer-post-expansion" " the-struct_0)" "(root-expand-context/outer-use-site-scopes" @@ -61542,7 +61544,7 @@ static const char *startup_source = " the-struct_0)" "(expand-context/outer-current-use-scopes" " the-struct_0)" -" name76_0))" +" name79_0))" "(raise-argument-error" " 'struct-copy" " \"expand-context/outer?\"" @@ -61552,8 +61554,8 @@ static const char *startup_source = " #f" " #f" " #f" -" temp74_0" -" temp75_0))))" +" temp77_0" +" temp78_0))))" "(let-values(((disarmed-exp-body_0)" "(syntax-disarm$1 exp-body_0)))" "(let-values(((tmp_0)" @@ -61575,13 +61577,13 @@ static const char *startup_source = " 'prim-begin)))" "(void)))" "(values))))" -"(let-values(((ok?_0 begin78_0 e79_0)" +"(let-values(((ok?_0 begin81_0 e82_0)" "(let-values(((s_1)" " disarmed-exp-body_0))" "(let-values(((orig-s_0)" " s_1))" -"(let-values(((begin78_0" -" e79_0)" +"(let-values(((begin81_0" +" e82_0)" "(let-values(((s_2)" "(if(syntax?$1" " s_1)" @@ -61590,12 +61592,12 @@ static const char *startup_source = " s_1)))" "(if(pair?" " s_2)" -"(let-values(((begin80_0)" +"(let-values(((begin83_0)" "(let-values(((s_3)" "(car" " s_2)))" " s_3))" -"((e81_0)" +"((e84_0)" "(let-values(((s_3)" "(cdr" " s_2)))" @@ -61618,16 +61620,16 @@ static const char *startup_source = "(let-values()" " flat-s_0)))))))" "(values" -" begin80_0" -" e81_0))" +" begin83_0" +" e84_0))" "(raise-syntax-error$1" " #f" " \"bad syntax\"" " orig-s_0)))))" "(values" " #t" -" begin78_0" -" e79_0))))))" +" begin81_0" +" e82_0))))))" "(let-values(((track_0)" "(lambda(e_0)" "(begin" @@ -61637,7 +61639,7 @@ static const char *startup_source = " exp-body_0)))))" "(let-values(((splice-bodys_0)" "(append" -"(map2 track_0 e79_0)" +"(map2 track_0 e82_0)" " rest-bodys_0)))" "(begin" "(let-values(((obs_0)" @@ -61678,16 +61680,16 @@ static const char *startup_source = "(void)))" "(values))))" "(let-values(((ok?_0" -" define-values82_0" -" id83_0" -" rhs84_0)" +" define-values85_0" +" id86_0" +" rhs87_0)" "(let-values(((s_1)" " disarmed-exp-body_0))" "(let-values(((orig-s_0)" " s_1))" -"(let-values(((define-values82_0" -" id83_0" -" rhs84_0)" +"(let-values(((define-values85_0" +" id86_0" +" rhs87_0)" "(let-values(((s_2)" "(if(syntax?$1" " s_1)" @@ -61696,13 +61698,13 @@ static const char *startup_source = " s_1)))" "(if(pair?" " s_2)" -"(let-values(((define-values85_0)" +"(let-values(((define-values88_0)" "(let-values(((s_3)" "(car" " s_2)))" " s_3))" -"((id86_0" -" rhs87_0)" +"((id89_0" +" rhs90_0)" "(let-values(((s_3)" "(cdr" " s_2)))" @@ -61714,7 +61716,7 @@ static const char *startup_source = " s_3)))" "(if(pair?" " s_4)" -"(let-values(((id88_0)" +"(let-values(((id91_0)" "(let-values(((s_5)" "(car" " s_4)))" @@ -61763,7 +61765,7 @@ static const char *startup_source = " id_0))" "(let-values(((id_2)" "(let-values()" -"(let-values(((id91_0)" +"(let-values(((id94_0)" "(let-values()" "(if(let-values(((or-part_0)" "(if(syntax?$1" @@ -61783,7 +61785,7 @@ static const char *startup_source = " orig-s_0" " s_7)))))" "(cons" -" id91_0" +" id94_0" " id_1)))))" "(values" " id_2)))))" @@ -61799,7 +61801,7 @@ static const char *startup_source = " lst_0)))))" "(reverse$1" " id_0))))))))" -"((rhs89_0)" +"((rhs92_0)" "(let-values(((s_5)" "(cdr" " s_4)))" @@ -61811,7 +61813,7 @@ static const char *startup_source = " s_5)))" "(if(pair?" " s_6)" -"(let-values(((rhs90_0)" +"(let-values(((rhs93_0)" "(let-values(((s_7)" "(car" " s_6)))" @@ -61834,34 +61836,34 @@ static const char *startup_source = " \"bad syntax\"" " orig-s_0))))))" "(values" -" rhs90_0))" +" rhs93_0))" "(raise-syntax-error$1" " #f" " \"bad syntax\"" " orig-s_0))))))" "(values" -" id88_0" -" rhs89_0))" +" id91_0" +" rhs92_0))" "(raise-syntax-error$1" " #f" " \"bad syntax\"" " orig-s_0))))))" "(values" -" define-values85_0" -" id86_0" -" rhs87_0))" +" define-values88_0" +" id89_0" +" rhs90_0))" "(raise-syntax-error$1" " #f" " \"bad syntax\"" " orig-s_0)))))" "(values" " #t" -" define-values82_0" -" id83_0" -" rhs84_0))))))" +" define-values85_0" +" id86_0" +" rhs87_0))))))" "(let-values(((ids_0)" "(remove-use-site-scopes" -" id83_0" +" id86_0" " body-ctx_1)))" "(let-values((()" "(begin" @@ -61878,24 +61880,24 @@ static const char *startup_source = " #f" "(list" " ids_0" -" rhs84_0)))))" +" rhs87_0)))))" "(void)))" "(values))))" "(let-values(((new-dups_0)" -"(let-values(((ids92_0)" +"(let-values(((ids95_0)" " ids_0)" -"((phase93_0)" +"((phase96_0)" " phase_0)" -"((exp-body94_0)" +"((exp-body97_0)" " exp-body_0)" -"((dups95_0)" +"((dups98_0)" " dups_0))" "(check-no-duplicate-ids7.1" " unsafe-undefined" -" ids92_0" -" phase93_0" -" exp-body94_0" -" dups95_0))))" +" ids95_0" +" phase96_0" +" exp-body97_0" +" dups98_0))))" "(let-values(((counter_0)" "(root-expand-context-counter" " ctx_0)))" @@ -61930,22 +61932,22 @@ static const char *startup_source = "(let-values()" "(cons" "(let-values()" -"(let-values(((id96_0)" +"(let-values(((id99_0)" " id_0)" -"((phase97_0)" +"((phase100_0)" " phase_0)" -"((counter98_0)" +"((counter101_0)" " counter_0)" -"((frame-id99_0)" +"((frame-id102_0)" " frame-id_0)" -"((exp-body100_0)" +"((exp-body103_0)" " exp-body_0))" "(add-local-binding!37.1" -" frame-id99_0" -" exp-body100_0" -" id96_0" -" phase97_0" -" counter98_0)))" +" frame-id102_0" +" exp-body103_0" +" id99_0" +" phase100_0" +" counter101_0)))" " fold-var_1))))" "(values" " fold-var_2)))))" @@ -62032,17 +62034,17 @@ static const char *startup_source = " v_0))" "(if(expand-context/outer?" " the-struct_0)" -"(let-values(((env101_0)" +"(let-values(((env104_0)" " extended-env_0)" -"((binding-layer102_0)" +"((binding-layer105_0)" "(maybe-increment-binding-layer_0" " ids_0" " body-ctx_1))" -"((inner103_0)" +"((inner106_0)" "(root-expand-context/outer-inner" " v_0)))" "(expand-context/outer1.1" -" inner103_0" +" inner106_0" "(root-expand-context/outer-post-expansion" " the-struct_0)" "(root-expand-context/outer-use-site-scopes" @@ -62051,12 +62053,12 @@ static const char *startup_source = " the-struct_0)" "(expand-context/outer-context" " the-struct_0)" -" env101_0" +" env104_0" "(expand-context/outer-scopes" " the-struct_0)" "(expand-context/outer-def-ctx-scopes" " the-struct_0)" -" binding-layer102_0" +" binding-layer105_0" "(expand-context/outer-reference-records" " the-struct_0)" "(expand-context/outer-only-immediate?" @@ -62172,7 +62174,7 @@ static const char *startup_source = " lst_0))))" " val-keyss_0))" "(cons" -" rhs84_0" +" rhs87_0" "(append" "(reverse$1" "(let-values(((lst_0)" @@ -62289,16 +62291,16 @@ static const char *startup_source = "(void)))" "(values))))" "(let-values(((ok?_0" -" define-syntaxes104_0" -" id105_0" -" rhs106_0)" +" define-syntaxes107_0" +" id108_0" +" rhs109_0)" "(let-values(((s_1)" " disarmed-exp-body_0))" "(let-values(((orig-s_0)" " s_1))" -"(let-values(((define-syntaxes104_0" -" id105_0" -" rhs106_0)" +"(let-values(((define-syntaxes107_0" +" id108_0" +" rhs109_0)" "(let-values(((s_2)" "(if(syntax?$1" " s_1)" @@ -62307,13 +62309,13 @@ static const char *startup_source = " s_1)))" "(if(pair?" " s_2)" -"(let-values(((define-syntaxes107_0)" +"(let-values(((define-syntaxes110_0)" "(let-values(((s_3)" "(car" " s_2)))" " s_3))" -"((id108_0" -" rhs109_0)" +"((id111_0" +" rhs112_0)" "(let-values(((s_3)" "(cdr" " s_2)))" @@ -62325,7 +62327,7 @@ static const char *startup_source = " s_3)))" "(if(pair?" " s_4)" -"(let-values(((id110_0)" +"(let-values(((id113_0)" "(let-values(((s_5)" "(car" " s_4)))" @@ -62374,7 +62376,7 @@ static const char *startup_source = " id_0))" "(let-values(((id_2)" "(let-values()" -"(let-values(((id113_0)" +"(let-values(((id116_0)" "(let-values()" "(if(let-values(((or-part_0)" "(if(syntax?$1" @@ -62394,7 +62396,7 @@ static const char *startup_source = " orig-s_0" " s_7)))))" "(cons" -" id113_0" +" id116_0" " id_1)))))" "(values" " id_2)))))" @@ -62410,7 +62412,7 @@ static const char *startup_source = " lst_0)))))" "(reverse$1" " id_0))))))))" -"((rhs111_0)" +"((rhs114_0)" "(let-values(((s_5)" "(cdr" " s_4)))" @@ -62422,7 +62424,7 @@ static const char *startup_source = " s_5)))" "(if(pair?" " s_6)" -"(let-values(((rhs112_0)" +"(let-values(((rhs115_0)" "(let-values(((s_7)" "(car" " s_6)))" @@ -62445,34 +62447,34 @@ static const char *startup_source = " \"bad syntax\"" " orig-s_0))))))" "(values" -" rhs112_0))" +" rhs115_0))" "(raise-syntax-error$1" " #f" " \"bad syntax\"" " orig-s_0))))))" "(values" -" id110_0" -" rhs111_0))" +" id113_0" +" rhs114_0))" "(raise-syntax-error$1" " #f" " \"bad syntax\"" " orig-s_0))))))" "(values" -" define-syntaxes107_0" -" id108_0" -" rhs109_0))" +" define-syntaxes110_0" +" id111_0" +" rhs112_0))" "(raise-syntax-error$1" " #f" " \"bad syntax\"" " orig-s_0)))))" "(values" " #t" -" define-syntaxes104_0" -" id105_0" -" rhs106_0))))))" +" define-syntaxes107_0" +" id108_0" +" rhs109_0))))))" "(let-values(((ids_0)" "(remove-use-site-scopes" -" id105_0" +" id108_0" " body-ctx_1)))" "(let-values((()" "(begin" @@ -62489,24 +62491,24 @@ static const char *startup_source = " #f" "(list" " ids_0" -" rhs106_0)))))" +" rhs109_0)))))" "(void)))" "(values))))" "(let-values(((new-dups_0)" -"(let-values(((ids114_0)" +"(let-values(((ids117_0)" " ids_0)" -"((phase115_0)" +"((phase118_0)" " phase_0)" -"((exp-body116_0)" +"((exp-body119_0)" " exp-body_0)" -"((dups117_0)" +"((dups120_0)" " dups_0))" "(check-no-duplicate-ids7.1" " unsafe-undefined" -" ids114_0" -" phase115_0" -" exp-body116_0" -" dups117_0))))" +" ids117_0" +" phase118_0" +" exp-body119_0" +" dups120_0))))" "(let-values(((counter_0)" "(root-expand-context-counter" " ctx_0)))" @@ -62541,22 +62543,22 @@ static const char *startup_source = "(let-values()" "(cons" "(let-values()" -"(let-values(((id118_0)" +"(let-values(((id121_0)" " id_0)" -"((phase119_0)" +"((phase122_0)" " phase_0)" -"((counter120_0)" +"((counter123_0)" " counter_0)" -"((frame-id121_0)" +"((frame-id124_0)" " frame-id_0)" -"((exp-body122_0)" +"((exp-body125_0)" " exp-body_0))" "(add-local-binding!37.1" -" frame-id121_0" -" exp-body122_0" -" id118_0" -" phase119_0" -" counter120_0)))" +" frame-id124_0" +" exp-body125_0" +" id121_0" +" phase122_0" +" counter123_0)))" " fold-var_1))))" "(values" " fold-var_2)))))" @@ -62604,7 +62606,7 @@ static const char *startup_source = "(let-values(((vals_0)" "(eval-for-syntaxes-binding" " 'define-syntaxes" -" rhs106_0" +" rhs109_0" " ids_0" " body-ctx_1)))" "(let-values(((extended-env_0)" @@ -62716,17 +62718,17 @@ static const char *startup_source = " v_0))" "(if(expand-context/outer?" " the-struct_0)" -"(let-values(((env123_0)" +"(let-values(((env126_0)" " extended-env_0)" -"((binding-layer124_0)" +"((binding-layer127_0)" "(maybe-increment-binding-layer_0" " ids_0" " body-ctx_1))" -"((inner125_0)" +"((inner128_0)" "(root-expand-context/outer-inner" " v_0)))" "(expand-context/outer1.1" -" inner125_0" +" inner128_0" "(root-expand-context/outer-post-expansion" " the-struct_0)" "(root-expand-context/outer-use-site-scopes" @@ -62735,12 +62737,12 @@ static const char *startup_source = " the-struct_0)" "(expand-context/outer-context" " the-struct_0)" -" env123_0" +" env126_0" "(expand-context/outer-scopes" " the-struct_0)" "(expand-context/outer-def-ctx-scopes" " the-struct_0)" -" binding-layer124_0" +" binding-layer127_0" "(expand-context/outer-reference-records" " the-struct_0)" "(expand-context/outer-only-immediate?" @@ -62771,7 +62773,7 @@ static const char *startup_source = " #f" "(list" " ids_0" -" rhs106_0)" +" rhs109_0)" " exp-body_0)" " stx-clauses_0)" " new-dups_0)))))))))))))))" @@ -62835,44 +62837,47 @@ static const char *startup_source = " null" "(make-check-no-duplicate-table))))))))))))))))))))" "(define-values" -"(finish-expanding-body27.1)" -"(lambda(disappeared-transformer-bindings13_0" -" name12_0" -" source10_0" -" stratified?11_0" -" body-ctx18_0" -" frame-id19_0" -" def-ctx-scopes20_0" -" val-idss21_0" -" val-keyss22_0" -" val-rhss23_0" -" track-stxs24_0" -" stx-clauses25_0" -" done-bodys26_0)" +"(finish-expanding-body29.1)" +"(lambda(disappeared-transformer-bindings14_0" +" name13_0" +" original-bodys10_0" +" source11_0" +" stratified?12_0" +" body-ctx20_0" +" frame-id21_0" +" def-ctx-scopes22_0" +" val-idss23_0" +" val-keyss24_0" +" val-rhss25_0" +" track-stxs26_0" +" stx-clauses27_0" +" done-bodys28_0)" "(begin" -" 'finish-expanding-body27" -"(let-values(((body-ctx_0) body-ctx18_0))" -"(let-values(((frame-id_0) frame-id19_0))" -"(let-values(((def-ctx-scopes_0) def-ctx-scopes20_0))" -"(let-values(((val-idss_0) val-idss21_0))" -"(let-values(((val-keyss_0) val-keyss22_0))" -"(let-values(((val-rhss_0) val-rhss23_0))" -"(let-values(((track-stxs_0) track-stxs24_0))" -"(let-values(((stx-clauses_0) stx-clauses25_0))" -"(let-values(((done-bodys_0) done-bodys26_0))" -"(let-values(((s_0) source10_0))" -"(let-values(((stratified?_0) stratified?11_0))" -"(let-values(((name_0) name12_0))" -"(let-values(((disappeared-transformer-bindings_0) disappeared-transformer-bindings13_0))" +" 'finish-expanding-body29" +"(let-values(((body-ctx_0) body-ctx20_0))" +"(let-values(((frame-id_0) frame-id21_0))" +"(let-values(((def-ctx-scopes_0) def-ctx-scopes22_0))" +"(let-values(((val-idss_0) val-idss23_0))" +"(let-values(((val-keyss_0) val-keyss24_0))" +"(let-values(((val-rhss_0) val-rhss25_0))" +"(let-values(((track-stxs_0) track-stxs26_0))" +"(let-values(((stx-clauses_0) stx-clauses27_0))" +"(let-values(((done-bodys_0) done-bodys28_0))" +"(let-values(((init-bodys_0) original-bodys10_0))" +"(let-values(((s_0) source11_0))" +"(let-values(((stratified?_0) stratified?12_0))" +"(let-values(((name_0) name13_0))" +"(let-values(((disappeared-transformer-bindings_0)" +" disappeared-transformer-bindings14_0))" "(let-values()" "(let-values((()" "(begin" "(if(null? done-bodys_0)" "(let-values()" "(raise-syntax-error$1" -" #f" -" \"no expression after a sequence of internal definitions\"" -" s_0))" +" (string->symbol \"begin (possibly implicit)\")" +" \"no expression after a sequence of internal definitions\"" +"(datum->syntax$1 #f(cons 'begin init-bodys_0) s_0)))" "(void))" "(values))))" "(let-values(((finish-ctx_0)" @@ -62882,31 +62887,31 @@ static const char *startup_source = " def-ctx-scopes_0)))" "(let-values(((the-struct_0) v_0))" "(if(expand-context/outer? the-struct_0)" -"(let-values(((context126_0) 'expression)" -"((use-site-scopes127_0)(box null))" -"((scopes128_0)" +"(let-values(((context129_0) 'expression)" +"((use-site-scopes130_0)(box null))" +"((scopes131_0)" "(append" "(unbox" "(root-expand-context-use-site-scopes" " body-ctx_0))" "(expand-context-scopes body-ctx_0)))" -"((only-immediate?129_0) #f)" -"((def-ctx-scopes130_0) #f)" -"((post-expansion131_0) #f)" -"((inner132_0)" +"((only-immediate?132_0) #f)" +"((def-ctx-scopes133_0) #f)" +"((post-expansion134_0) #f)" +"((inner135_0)" "(root-expand-context/outer-inner v_0)))" "(expand-context/outer1.1" -" inner132_0" -" post-expansion131_0" -" use-site-scopes127_0" +" inner135_0" +" post-expansion134_0" +" use-site-scopes130_0" "(root-expand-context/outer-frame-id the-struct_0)" -" context126_0" +" context129_0" "(expand-context/outer-env the-struct_0)" -" scopes128_0" -" def-ctx-scopes130_0" +" scopes131_0" +" def-ctx-scopes133_0" "(expand-context/outer-binding-layer the-struct_0)" "(expand-context/outer-reference-records the-struct_0)" -" only-immediate?129_0" +" only-immediate?132_0" "(expand-context/outer-need-eventually-defined the-struct_0)" "(expand-context/outer-current-introduction-scopes" " the-struct_0)" @@ -62914,7 +62919,7 @@ static const char *startup_source = "(expand-context/outer-name the-struct_0)))" "(raise-argument-error" " 'struct-copy" -" \"expand-context/outer?\"" +" \"expand-context/outer?\"" " the-struct_0))))))" "(let-values(((finish-bodys_0)" "(lambda()" @@ -62962,7 +62967,8 @@ static const char *startup_source = "(if(variable-reference-from-unsafe?" "(#%variable-reference))" "(void)" -"(let-values()(check-list lst_0)))" +"(let-values()" +"(check-list lst_0)))" "(if(variable-reference-from-unsafe?" "(#%variable-reference))" "(void)" @@ -63004,9 +63010,9 @@ static const char *startup_source = " obs_0" " 'next)))" "(void)))" -"(let-values(((done-body133_0)" +"(let-values(((done-body136_0)" " done-body_0)" -"((temp134_0)" +"((temp137_0)" "(if(if name_0" "(=" " i_0" @@ -63018,13 +63024,13 @@ static const char *startup_source = " v_0))" "(if(expand-context/outer?" " the-struct_0)" -"(let-values(((name135_0)" +"(let-values(((name138_0)" " name_0)" -"((inner136_0)" +"((inner139_0)" "(root-expand-context/outer-inner" " v_0)))" "(expand-context/outer1.1" -" inner136_0" +" inner139_0" "(root-expand-context/outer-post-expansion" " the-struct_0)" "(root-expand-context/outer-use-site-scopes" @@ -63051,18 +63057,18 @@ static const char *startup_source = " the-struct_0)" "(expand-context/outer-current-use-scopes" " the-struct_0)" -" name135_0))" +" name138_0))" "(raise-argument-error" " 'struct-copy" -" \"expand-context/outer?\"" +" \"expand-context/outer?\"" " the-struct_0))))" " finish-ctx_0)))" "(expand9.1" " #f" " #f" " #f" -" done-body133_0" -" temp134_0))))" +" done-body136_0" +" temp137_0))))" " fold-var_1))))" "(values" " fold-var_2)))))" @@ -63082,7 +63088,8 @@ static const char *startup_source = " start_0))))))" "(begin" "(let-values(((obs_0)" -"(expand-context-observer body-ctx_0)))" +"(expand-context-observer" +" body-ctx_0)))" "(if obs_0" "(let-values()" "(let-values()" @@ -63125,29 +63132,29 @@ static const char *startup_source = "(void)))" "(values))))" "(let-values(((exp-s_0)" -"(let-values(((val-idss137_0) val-idss_0)" -"((val-keyss138_0) val-keyss_0)" -"((val-rhss139_0) val-rhss_0)" -"((track-stxs140_0) track-stxs_0)" -"((temp141_0)(not stratified?_0))" -"((frame-id142_0) frame-id_0)" -"((finish-ctx143_0) finish-ctx_0)" -"((s144_0) s_0)" -"((temp145_0)(pair? stx-clauses_0))" -"((finish-bodys146_0) finish-bodys_0)" -"((temp147_0) #f))" -"(expand-and-split-bindings-by-reference48.1" -" finish-ctx143_0" -" frame-id142_0" -" finish-bodys146_0" -" temp145_0" -" s144_0" -" temp141_0" -" temp147_0" -" val-idss137_0" -" val-keyss138_0" -" val-rhss139_0" -" track-stxs140_0))))" +"(let-values(((val-idss140_0) val-idss_0)" +"((val-keyss141_0) val-keyss_0)" +"((val-rhss142_0) val-rhss_0)" +"((track-stxs143_0) track-stxs_0)" +"((temp144_0)(not stratified?_0))" +"((frame-id145_0) frame-id_0)" +"((finish-ctx146_0) finish-ctx_0)" +"((s147_0) s_0)" +"((temp148_0)(pair? stx-clauses_0))" +"((finish-bodys149_0) finish-bodys_0)" +"((temp150_0) #f))" +"(expand-and-split-bindings-by-reference50.1" +" finish-ctx146_0" +" frame-id145_0" +" finish-bodys149_0" +" temp148_0" +" s147_0" +" temp144_0" +" temp150_0" +" val-idss140_0" +" val-keyss141_0" +" val-rhss142_0" +" track-stxs143_0))))" "(begin" "(let-values(((obs_0)(expand-context-observer body-ctx_0)))" "(if obs_0" @@ -63162,33 +63169,33 @@ static const char *startup_source = "(list" "(attach-disappeared-transformer-bindings" " exp-s_0" -" disappeared-transformer-bindings_0))))))))))))))))))))))))))))" +" disappeared-transformer-bindings_0)))))))))))))))))))))))))))))" "(define-values" -"(expand-and-split-bindings-by-reference48.1)" -"(lambda(ctx32_0" -" frame-id31_0" -" get-body35_0" -" had-stxes?34_0" -" source33_0" -" split?30_0" -" track?36_0" -" idss44_0" -" keyss45_0" -" rhss46_0" -" track-stxs47_0)" +"(expand-and-split-bindings-by-reference50.1)" +"(lambda(ctx34_0" +" frame-id33_0" +" get-body37_0" +" had-stxes?36_0" +" source35_0" +" split?32_0" +" track?38_0" +" idss46_0" +" keyss47_0" +" rhss48_0" +" track-stxs49_0)" "(begin" -" 'expand-and-split-bindings-by-reference48" -"(let-values(((idss_0) idss44_0))" -"(let-values(((keyss_0) keyss45_0))" -"(let-values(((rhss_0) rhss46_0))" -"(let-values(((track-stxs_0) track-stxs47_0))" -"(let-values(((split?_0) split?30_0))" -"(let-values(((frame-id_0) frame-id31_0))" -"(let-values(((ctx_0) ctx32_0))" -"(let-values(((s_0) source33_0))" -"(let-values(((had-stxes?_0) had-stxes?34_0))" -"(let-values(((get-body_0) get-body35_0))" -"(let-values(((track?_0) track?36_0))" +" 'expand-and-split-bindings-by-reference50" +"(let-values(((idss_0) idss46_0))" +"(let-values(((keyss_0) keyss47_0))" +"(let-values(((rhss_0) rhss48_0))" +"(let-values(((track-stxs_0) track-stxs49_0))" +"(let-values(((split?_0) split?32_0))" +"(let-values(((frame-id_0) frame-id33_0))" +"(let-values(((ctx_0) ctx34_0))" +"(let-values(((s_0) source35_0))" +"(let-values(((had-stxes?_0) had-stxes?36_0))" +"(let-values(((get-body_0) get-body37_0))" +"(let-values(((track?_0) track?38_0))" "(let-values()" "(let-values(((phase_0)(expand-context-phase ctx_0)))" "((letrec-values(((loop_0)" @@ -63228,9 +63235,9 @@ static const char *startup_source = " accum-keyss_0" " accum-rhss_0))" " exp-body_0))" -"(let-values(((track?148_0) track?_1)" -"((s149_0) s_0)" -"((temp150_0)" +"(let-values(((track?151_0) track?_1)" +"((s152_0) s_0)" +"((temp153_0)" "(list*" "(if(null? accum-idss_0)" "(core-id" @@ -63245,9 +63252,9 @@ static const char *startup_source = " accum-track-stxs_0)" " exp-body_0)))" "(rebuild5.1" -" track?148_0" -" s149_0" -" temp150_0)))))" +" track?151_0" +" s152_0" +" temp153_0)))))" "(begin" "(let-values(((obs_0)" "(expand-context-observer ctx_0)))" @@ -63278,8 +63285,8 @@ static const char *startup_source = "(values))))" "(let-values(((ids_0)(car idss_1)))" "(let-values(((expanded-rhs_0)" -"(let-values(((temp151_0)(car rhss_1))" -"((temp152_0)" +"(let-values(((temp154_0)(car rhss_1))" +"((temp155_0)" "(as-named-context" " ctx_0" " ids_0)))" @@ -63287,8 +63294,8 @@ static const char *startup_source = " #f" " #f" " #f" -" temp151_0" -" temp152_0))))" +" temp154_0" +" temp155_0))))" "(let-values(((track-stx_0)(car track-stxs_1)))" "(let-values(((local-or-forward-references?_0)" "(reference-record-forward-references?" @@ -63339,11 +63346,11 @@ static const char *startup_source = "(car keyss_1)" " expanded-rhs_0))" " exp-rest_0)" -"(let-values(((track?153_0)" +"(let-values(((track?156_0)" " track?_1)" -"((s154_0)" +"((s157_0)" " s_0)" -"((temp155_0)" +"((temp158_0)" "(list*" "(core-id" " 'let-values" @@ -63355,9 +63362,9 @@ static const char *startup_source = " track-stx_0))" " exp-rest_0)))" "(rebuild5.1" -" track?153_0" -" s154_0" -" temp155_0)))))" +" track?156_0" +" s157_0" +" temp158_0)))))" "(begin" "(let-values(((obs_0)" "(expand-context-observer" @@ -63419,11 +63426,11 @@ static const char *startup_source = " accum-keyss_0" " accum-rhss_0)))" " exp-rest_0)" -"(let-values(((track?156_0)" +"(let-values(((track?159_0)" " track?_1)" -"((s157_0)" +"((s160_0)" " s_0)" -"((temp158_0)" +"((temp161_0)" "(list*" "(core-id" " 'letrec-values" @@ -63440,9 +63447,9 @@ static const char *startup_source = " accum-track-stxs_0))" " exp-rest_0)))" "(rebuild5.1" -" track?156_0" -" s157_0" -" temp158_0)))))" +" track?159_0" +" s160_0" +" temp161_0)))))" "(begin" "(let-values(((obs_0)" "(expand-context-observer" @@ -66602,7 +66609,7 @@ static const char *startup_source = " get-body_0)" "((temp213_0)" " #t))" -"(expand-and-split-bindings-by-reference48.1" +"(expand-and-split-bindings-by-reference50.1" " rec-ctx209_0" " frame-id208_0" " get-body212_0"