diff --git a/pkgs/racket-test-core/tests/racket/stx.rktl b/pkgs/racket-test-core/tests/racket/stx.rktl index 755cb7421d..a144a80821 100644 --- a/pkgs/racket-test-core/tests/racket/stx.rktl +++ b/pkgs/racket-test-core/tests/racket/stx.rktl @@ -2338,7 +2338,34 @@ (test #t syntax-property-preserved? s0 'a-third-thing) ;; 'paren-shape has a special default: - (test #t syntax-property-preserved? (syntax-property #'#f 'paren-shape #\() 'paren-shape)) + (test #t syntax-property-preserved? (syntax-property #'#f 'paren-shape #\() 'paren-shape) + + ;; Without 'paren-shape ------------------------------ + + (define s2-0 (syntax-property + (syntax-property + (syntax-property #'0 'something-else 1.0 #t) + 'something-not-saved 2.0) + 'a-third-thing 3.0 #t)) + (define s2 (zo-bounce s2-0)) + + (test #f syntax-property s2 'paren-shape) + (test #f syntax-property s2-0 'paren-shape) + + (test 1.0 syntax-property s2 'something-else) + (test 1.0 syntax-property s2-0 'something-else) + (test #t syntax-property-preserved? s2 'something-else) + (test #t syntax-property-preserved? s2-0 'something-else) + + (test #f syntax-property s2 'something-not-saved) + (test 2.0 syntax-property s2-0 'something-not-saved) + (test #f syntax-property-preserved? s2 'something-not-saved) + (test #f syntax-property-preserved? s2-0 'something-not-saved) + + (test 3.0 syntax-property s2 'a-third-thing) + (test 3.0 syntax-property s2-0 'a-third-thing) + (test #t syntax-property-preserved? s2 'a-third-thing) + (test #t syntax-property-preserved? s2-0 'a-third-thing)) ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; diff --git a/racket/src/racket/src/syntax.c b/racket/src/racket/src/syntax.c index ff98074c2a..b4e56f31b1 100644 --- a/racket/src/racket/src/syntax.c +++ b/racket/src/racket/src/syntax.c @@ -6530,7 +6530,7 @@ static void unconvert_srcloc(Scheme_Object *srcloc_vec, Scheme_Stx *dest) if (SCHEME_PAIRP(p) && SCHEME_SYMBOLP(SCHEME_CAR(p)) && !SCHEME_SYM_WEIRDP(SCHEME_CAR(p))) { - props = scheme_hash_tree_set(dest->props, + props = scheme_hash_tree_set((dest->props ? dest->props : empty_hash_tree), SCHEME_CAR(p), make_preserved_property_value(SCHEME_CDR(p))); dest->props = props;