Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions plutus-tx-plugin/plutus-tx-plugin.cabal
Original file line number Diff line number Diff line change
Expand Up @@ -140,6 +140,7 @@ test-suite plutus-tx-plugin-tests
Budget.Spec
Budget.WithGHCOptimisations
Budget.WithoutGHCOptimisations
BuiltinCasing.Lib
BuiltinCasing.Spec
BuiltinList.Budget.Spec
BuiltinList.NoCasing.Spec
Expand Down
17 changes: 15 additions & 2 deletions plutus-tx-plugin/src/PlutusTx/Compiler/Expr.hs
Original file line number Diff line number Diff line change
Expand Up @@ -1257,11 +1257,24 @@ compileExpr mloc e = do
-- The "unfolding template" includes things with normal unfoldings and also dictionary functions
Just unfolding -> hoistExpr n unfolding
Nothing ->
throwSd FreeVariableError $
"Variable"
throwSd
(if GHC.isLocalId n then UnsupportedError else FreeVariableError)
$ "Variable"
GHC.<+> GHC.ppr n
GHC.$+$ (GHC.ppr $ GHC.idDetails n)
GHC.$+$ (GHC.ppr $ GHC.realIdUnfolding n)
GHC.$+$ if GHC.isLocalId n
then
""
GHC.$+$ "This error often indicates a stage violation in Plinth compilation."
GHC.$+$ "Variables inside compile quotations must be either:"
GHC.$+$ " • Top-level variables, or"
GHC.$+$ " • Bound inside the quotation itself"
GHC.$+$ ""
GHC.$+$ "Common causes:"
GHC.$+$ " • Using a function defined in a 'where' clause: move it to the top level"
GHC.$+$ " • Referencing local variables from outside the quotation"
else ""
-- arg can be a type here, in which case it's a type instantiation
l `GHC.App` GHC.Type t -> do
l' <- compileExpr Nothing l
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
CPU: 337_547_895
Memory: 988_745
AST Size: 639
Flat Size: 949
CPU: 341_387_895
Memory: 1_012_745
AST Size: 629
Flat Size: 939

(con bool True)
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
CPU: 355_097_594
Memory: 1_055_015
AST Size: 639
Flat Size: 1_000
CPU: 359_033_594
Memory: 1_079_615
AST Size: 629
Flat Size: 990

(con bool False)
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
CPU: 368_720_887
Memory: 1_100_329
AST Size: 639
Flat Size: 1_000
CPU: 372_656_887
Memory: 1_124_929
AST Size: 629
Flat Size: 990

(con bool True)
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
CPU: 331_212_553
Memory: 946_336
AST Size: 639
Flat Size: 956
CPU: 335_148_553
Memory: 970_936
AST Size: 629
Flat Size: 946

(con bool False)
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
CPU: 349_612_383
Memory: 1_021_500
AST Size: 639
Flat Size: 956
CPU: 353_548_383
Memory: 1_046_100
AST Size: 629
Flat Size: 946

(con bool True)
Original file line number Diff line number Diff line change
Expand Up @@ -268,40 +268,38 @@ let
= case data hd [(\(l : data) (r : data) -> r)]
!k : data
= case data hd [(\(l : data) (r : data) -> l)]
!`$j` : data -> list (pair data data)
= \(v' : data) ->
mkCons
{pair data data}
(mkPairData k v')
(goRight tl)
in
Maybe_match
{data}
(lookup' k ds)
{all dead. list (pair data data)}
(\(r : data) ->
/\dead ->
mkCons
{pair data data}
(mkPairData
k
(`$fToDataThese_$ctoBuiltinData`
`$j`
(`$fToDataThese_$ctoBuiltinData`
{a}
{b}
`$dToData`
`$dToData`
(These
{a}
{b}
`$dToData`
`$dToData`
(These
{a}
{b}
(`$dUnsafeFromData` v)
(`$dUnsafeFromData` r))))
(goRight tl))
(`$dUnsafeFromData` v)
(`$dUnsafeFromData` r))))
(/\dead ->
mkCons
{pair data data}
(mkPairData
k
(`$fToDataThese_$ctoBuiltinData`
{a}
{b}
`$dToData`
`$dToData`
(That {a} {b} (`$dUnsafeFromData` v))))
(goRight tl))
`$j`
(`$fToDataThese_$ctoBuiltinData`
{a}
{b}
`$dToData`
`$dToData`
(That {a} {b} (`$dUnsafeFromData` v))))
{all dead. dead})
, [] ]
in
Expand All @@ -318,40 +316,38 @@ let
= case data hd [(\(l : data) (r : data) -> r)]
!k : data
= case data hd [(\(l : data) (r : data) -> l)]
!`$j` : data -> list (pair data data)
= \(v' : data) ->
mkCons
{pair data data}
(mkPairData k v')
(goLeft tl)
in
Maybe_match
{data}
(lookup' k ds)
{all dead. list (pair data data)}
(\(r : data) ->
/\dead ->
mkCons
{pair data data}
(mkPairData
k
(`$fToDataThese_$ctoBuiltinData`
`$j`
(`$fToDataThese_$ctoBuiltinData`
{a}
{b}
`$dToData`
`$dToData`
(These
{a}
{b}
`$dToData`
`$dToData`
(These
{a}
{b}
(`$dUnsafeFromData` v)
(`$dUnsafeFromData` r))))
(goLeft tl))
(`$dUnsafeFromData` v)
(`$dUnsafeFromData` r))))
(/\dead ->
mkCons
{pair data data}
(mkPairData
k
(`$fToDataThese_$ctoBuiltinData`
{a}
{b}
`$dToData`
`$dToData`
(This {a} {b} (`$dUnsafeFromData` v))))
(goLeft tl))
`$j`
(`$fToDataThese_$ctoBuiltinData`
{a}
{b}
`$dToData`
`$dToData`
(This {a} {b} (`$dUnsafeFromData` v))))
{all dead. dead})
, [] ]
in
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
CPU: 388_148_300
Memory: 1_166_660
AST Size: 1_023
Flat Size: 1_324
CPU: 391_988_300
Memory: 1_190_660
AST Size: 1_013
Flat Size: 1_314

(con bool False)
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
CPU: 355_465_594
Memory: 1_057_315
AST Size: 1_023
Flat Size: 1_375
CPU: 359_401_594
Memory: 1_081_915
AST Size: 1_013
Flat Size: 1_365

(con bool False)
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
CPU: 420_042_992
Memory: 1_282_209
AST Size: 1_023
Flat Size: 1_375
CPU: 423_978_992
Memory: 1_306_809
AST Size: 1_013
Flat Size: 1_365

(con bool True)
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
CPU: 331_580_553
Memory: 948_636
AST Size: 1_023
Flat Size: 1_331
CPU: 335_516_553
Memory: 973_236
AST Size: 1_013
Flat Size: 1_321

(con bool False)
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
CPU: 373_819_011
Memory: 1_110_324
AST Size: 1_023
Flat Size: 1_331
CPU: 377_755_011
Memory: 1_134_924
AST Size: 1_013
Flat Size: 1_321

(con bool True)
8 changes: 4 additions & 4 deletions plutus-tx-plugin/test/Budget/9.12/map2.golden.eval
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
CPU: 67_827_382
Memory: 197_790
AST Size: 423
Flat Size: 458
CPU: 68_307_382
Memory: 200_790
AST Size: 418
Flat Size: 453

(constr
1
Expand Down
15 changes: 7 additions & 8 deletions plutus-tx-plugin/test/Budget/9.12/map2.golden.pir
Original file line number Diff line number Diff line change
Expand Up @@ -159,20 +159,19 @@ in
{all dead. dead})
, (Nothing {data}) ]
in
let
!`$j` : data -> list (pair data data)
= \(v'' : data) ->
mkCons {pair data data} (mkPairData k' v'') (go tl)
in
Maybe_match
{data}
(go nt)
{all dead. list (pair data data)}
(\(r : data) ->
/\dead ->
mkCons
{pair data data}
(mkPairData
k'
(iData (addInteger (unIData v') (unIData r))))
(go tl))
(/\dead ->
mkCons {pair data data} (mkPairData k' v') (go tl))
`$j` (iData (addInteger (unIData v') (unIData r))))
(/\dead -> `$j` v')
{all dead. dead})
, [] ]
in
Expand Down
62 changes: 31 additions & 31 deletions plutus-tx-plugin/test/Budget/9.12/map2.golden.uplc
Original file line number Diff line number Diff line change
Expand Up @@ -70,41 +70,41 @@
tl ->
(\v' ->
(\k' ->
(\s ->
case
(s s nt)
[ (\r ->
force mkCons
(mkPairData
k'
(\`$j` ->
(\s ->
case
(s s nt)
[ (\r ->
`$j`
(iData
(addInteger
(unIData v')
(unIData r))))
(s s tl))
, (force mkCons
(mkPairData k' v')
(s s tl)) ])
(\s
xs ->
case
xs
[ (\hd ->
case
(equalsData
k'
(case
hd
[(\l r -> l)]))
[ (\x -> s s x)
, (\ds ->
constr 0
[ (case
hd
[ (\l
r ->
r) ]) ]) ])
, (constr 1 []) ]))
, (`$j` v') ])
(\s
xs ->
case
xs
[ (\hd ->
case
(equalsData
k'
(case
hd
[(\l r -> l)]))
[ (\x -> s s x)
, (\ds ->
constr 0
[ (case
hd
[ (\l
r ->
r) ]) ]) ])
, (constr 1 []) ]))
(\v'' ->
force mkCons
(mkPairData k' v'')
(s s tl)))
(case hd [(\l r -> l)]))
(case hd [(\l r -> r)]))
, [] ])))
Expand Down
Loading
Loading