git.iko.soy/rowtype-yoga/purescm
on bytevector help sign in
Implement record accessor (#112)

* Implement record accessor * Add test

commit6cf2ab0b89d88c43c267696b5411ef070cff2350 authorJustin Garcia <purefunctor@pm.me> dateTue 4 Apr 2023, 18:14 (4 years ago) parent3840ec9
3 files changed+21−2
src/PureScript/Backend/Chez/Convert.purs+4−2 test-snapshots/src/snapshots-input/Snapshot.Literals.Record.purs+4 test-snapshots/src/snapshots-output/Snapshot.Literals.Record.ss+13
src/PureScript/Backend/Chez/Convert.purs+4−2
@@ -157,8 +157,10 @@ codegenExpr codegenEnv@{ currentModule } s = case unwrap s of
157157 UncurriedEffectAbs _ _ ->
158158 S.Identifier "uncurried-effect-ab"
159159
160− Accessor _ (GetProp _) ->
161− S.Identifier $ "accessor-get-prop"
160+ Accessor e (GetProp i) ->
161+ S.chezUncurriedApplication
162+ (S.Identifier $ scmPrefixed "hashtable-ref")
163+ [ codegenExpr codegenEnv e, S.String $ Json.stringify $ Json.fromString i, S.Boolean false ]
162164 Accessor e (GetIndex i) ->
163165 S.chezUncurriedApplication
164166 (S.Identifier $ scmPrefixed "vector-ref")
test-snapshots/src/snapshots-input/Snapshot.Literals.Record.pursnew file+4
@@ -0,0 +1,4 @@
1+module Snapshot.Literals.Record where
2+
3+recordAccess :: forall a r. { fooBarBaz :: a | r } -> a
4+recordAccess = _.fooBarBaz
test-snapshots/src/snapshots-output/Snapshot.Literals.Record.ssnew file+13
@@ -0,0 +1,13 @@
1+#!r6rs
2+#!chezscheme
3+(library
4+ (Snapshot.Literals.Record lib)
5+ (export
6+ recordAccess)
7+ (import
8+ (prefix (chezscheme) scm:)
9+ (prefix (_Chez_Runtime lib) rt:))
10+
11+ (scm:define recordAccess
12+ (scm:lambda (v0)
13+ (scm:hashtable-ref v0 "fooBarBaz" #f))))