blob: ae8ab75d18fd93d03b987daeb80fdf0a547ebc6d (
plain) (
tree)
|
|
:(scenarios transform) // many of the tests below are *extremely* unsafe
:(scenario abandon_in_same_recipe_as_new)
recipe test [
x:address:number <- new number:type
abandon x
]
# no warnings
:(scenario abandon_in_separate_recipe_from_new)
recipe test [
x:address:number <- test-new
test-abandon x
]
recipe test-new -> result:address:number [
result <- new number:type
]
recipe test-abandon x:address:number [
load-ingredients
abandon x
]
# no warnings
:(scenario define_after_abandon_in_same_recipe_as_new)
recipe test [
x:address:number <- new number:type
abandon x
x <- new number:type
reply x
]
# no warnings
:(scenario define_after_abandon_in_separate_recipe_from_new)
recipe test [
x:address:number <- test-new
test-abandon x
x <- test-new
reply x
]
recipe test-new -> result:address:number [
result <- new number:type
]
recipe test-abandon x:address:number [
load-ingredients
abandon x
]
# no warnings
:(scenario abandon_inside_loop_initializing_variable)
recipe test [
{
x:address:number <- new number:type
abandon x
loop
}
]
# no warnings
:(scenario abandon_inside_loop_initializing_variable_2)
recipe test [
{
x:address:number <- test-new
test-abandon x
loop
}
]
recipe test-new -> result:address:number [
result <- new number:type
]
recipe test-abandon x:address:number [
load-ingredients
abandon x
]
# no warnings
:(scenario abandon_inside_loop_initializing_variable_3)
recipe test [
{
x:address:number <- test-new
test-abandon x
x:address:number <- test-new # modify x to a new value
y:address:number <- copy x # use x after reinitialization
loop
}
]
recipe test-new -> result:address:number [
result <- new number:type
]
recipe test-abandon x:address:number [
load-ingredients
abandon x
]
# no warnings
:(scenario abandon_inside_loop_initializing_variable_4)
container test-list [
value:number
next:address:test-list
]
recipe test-cleanup x:address:test-list [
load-ingredients
{
next:address:test-list <- test-next x
test-abandon x
x <- copy next
loop
}
]
recipe test-next x:address:test-list -> result:address:test-list/contained-in:x [
load-ingredients
result <- get *x, next:offset
]
recipe test-abandon x:address:test-list [
load-ingredients
abandon x
]
# no warnings
:(scenario abandon_non_unique_address_after_define)
recipe test [
x:address:number <- new number:type
y:address:number <- copy x
abandon x
y:address:number <- new number:type # overwrite alias
z:address:number <- copy y
]
# no warnings
|