mirror of
https://github.com/roc-lang/roc.git
synced 2025-12-23 08:48:03 +00:00
2.3 KiB
2.3 KiB
META
description=Inline annotation for statements
type=snippet
SOURCE
scopedTypeVarInternal : val -> val
scopedTypeVarInternal = |a| {
b : other_val -> other_val
b = |c| {
d : other_val
d = c
d
}
b(a)
}
EXPECTED
NIL
PROBLEMS
NIL
TOKENS
LowerIdent,OpColon,LowerIdent,OpArrow,LowerIdent,
LowerIdent,OpAssign,OpBar,LowerIdent,OpBar,OpenCurly,
LowerIdent,OpColon,LowerIdent,OpArrow,LowerIdent,
LowerIdent,OpAssign,OpBar,LowerIdent,OpBar,OpenCurly,
LowerIdent,OpColon,LowerIdent,
LowerIdent,OpAssign,LowerIdent,
LowerIdent,
CloseCurly,
LowerIdent,NoSpaceOpenRound,LowerIdent,CloseRound,
CloseCurly,
EndOfFile,
PARSE
(file
(type-module)
(statements
(s-type-anno (name "scopedTypeVarInternal")
(ty-fn
(ty-var (raw "val"))
(ty-var (raw "val"))))
(s-decl
(p-ident (raw "scopedTypeVarInternal"))
(e-lambda
(args
(p-ident (raw "a")))
(e-block
(statements
(s-type-anno (name "b")
(ty-fn
(ty-var (raw "other_val"))
(ty-var (raw "other_val"))))
(s-decl
(p-ident (raw "b"))
(e-lambda
(args
(p-ident (raw "c")))
(e-block
(statements
(s-type-anno (name "d")
(ty-var (raw "other_val")))
(s-decl
(p-ident (raw "d"))
(e-ident (raw "c")))
(e-ident (raw "d"))))))
(e-apply
(e-ident (raw "b"))
(e-ident (raw "a")))))))))
FORMATTED
NO CHANGE
CANONICALIZE
(can-ir
(d-let
(p-assign (ident "scopedTypeVarInternal"))
(e-lambda
(args
(p-assign (ident "a")))
(e-block
(s-let
(p-assign (ident "b"))
(e-lambda
(args
(p-assign (ident "c")))
(e-block
(s-let
(p-assign (ident "d"))
(e-lookup-local
(p-assign (ident "c"))))
(e-lookup-local
(p-assign (ident "d"))))))
(e-call
(e-lookup-local
(p-assign (ident "b")))
(e-lookup-local
(p-assign (ident "a"))))))
(annotation
(ty-fn (effectful false)
(ty-rigid-var (name "val"))
(ty-rigid-var-lookup (ty-rigid-var (name "val")))))))
TYPES
(inferred-types
(defs
(patt (type "val -> val")))
(expressions
(expr (type "val -> val"))))