mirror of
https://github.com/roc-lang/roc.git
synced 2025-12-21 15:50:59 +00:00
1.7 KiB
1.7 KiB
META
description=Basic record updater with field override
type=snippet
SOURCE
person = { name: "Alice", age: 30 }
updated = { ..person, age: 31 }
EXPECTED
NIL
PROBLEMS
NIL
TOKENS
LowerIdent,OpAssign,OpenCurly,LowerIdent,OpColon,StringStart,StringPart,StringEnd,Comma,LowerIdent,OpColon,Int,CloseCurly,
LowerIdent,OpAssign,OpenCurly,DoubleDot,LowerIdent,Comma,LowerIdent,OpColon,Int,CloseCurly,
EndOfFile,
PARSE
(file
(type-module)
(statements
(s-decl
(p-ident (raw "person"))
(e-record
(field (field "name")
(e-string
(e-string-part (raw "Alice"))))
(field (field "age")
(e-int (raw "30")))))
(s-decl
(p-ident (raw "updated"))
(e-record
(ext
(e-ident (raw "person")))
(field (field "age")
(e-int (raw "31")))))))
FORMATTED
NO CHANGE
CANONICALIZE
(can-ir
(d-let
(p-assign (ident "person"))
(e-record
(fields
(field (name "name")
(e-string
(e-literal (string "Alice"))))
(field (name "age")
(e-num (value "30"))))))
(d-let
(p-assign (ident "updated"))
(e-record
(ext
(e-lookup-local
(p-assign (ident "person"))))
(fields
(field (name "age")
(e-num (value "31")))))))
TYPES
(inferred-types
(defs
(patt (type "{ age: a, name: Str } where [a.from_numeral : Numeral -> Try(a, [InvalidNumeral(Str)])]"))
(patt (type "{ age: a, name: Str } where [a.from_numeral : Numeral -> Try(a, [InvalidNumeral(Str)])]")))
(expressions
(expr (type "{ age: a, name: Str } where [a.from_numeral : Numeral -> Try(a, [InvalidNumeral(Str)])]"))
(expr (type "{ age: a, name: Str } where [a.from_numeral : Numeral -> Try(a, [InvalidNumeral(Str)])]"))))