tliron / puccini

Cloud topology management and deployment tools based on TOSCA
https://puccini.cloud
Apache License 2.0
88 stars 20 forks source link

Race condition during inheritence #76

Closed tliron closed 3 years ago

tliron commented 3 years ago

Panic example:

fatal error: concurrent map iteration and map write

goroutine 49 [running]:
runtime.throw(0xccd945, 0x26)
    /Depot/Applications/go/src/runtime/panic.go:1117 +0x72 fp=0xc0007e92e0 sp=0xc0007e92b0 pc=0x43ad92
runtime.mapiternext(0xc000336900)
    /Depot/Applications/go/src/runtime/map.go:858 +0x54c fp=0xc0007e9360 sp=0xc0007e92e0 pc=0x41370c
runtime.mapiterinit(0xbf8600, 0xc00050eb40, 0xc000336900)
    /Depot/Applications/go/src/runtime/map.go:848 +0x1c5 fp=0xc0007e9380 sp=0xc0007e9360 pc=0x4130c5
reflect.mapiterinit(0xbf8600, 0xc00050eb40, 0x0)
    /Depot/Applications/go/src/runtime/map.go:1340 +0x54 fp=0xc0007e93b0 sp=0xc0007e9380 pc=0x46dc34
reflect.Value.MapKeys(0xbf8600, 0xc000150028, 0x195, 0xbd76a3, 0x13, 0xbf8600)
    /Depot/Applications/go/src/reflect/value.go:1215 +0xc7 fp=0xc0007e9440 sp=0xc0007e93b0 pc=0x4e4227
github.com/tliron/puccini/tosca/parser.(*InheritContext).GetDependencies(0xc0000dc180, 0xc05620, 0xc000150000, 0xc000fafe58)
    /Depot/Projects/RedHat/puccini/tosca/parser/phase4-inheritance.go:111 +0x2e5 fp=0xc0007e95a0 sp=0xc0007e9440 pc=0xb24c85
github.com/tliron/puccini/tosca/parser.(*InheritContext).GetInheritTask(0xc0000dc180, 0xc05620, 0xc000150000, 0xc000c4c660)
    /Depot/Projects/RedHat/puccini/tosca/parser/phase4-inheritance.go:48 +0x245 fp=0xc0007e96d8 sp=0xc0007e95a0 pc=0xb24545
github.com/tliron/puccini/tosca/parser.(*InheritContext).GetInheritTask(0xc0000dc180, 0xc48d20, 0xc00041e880, 0xc000336648)
    /Depot/Projects/RedHat/puccini/tosca/parser/phase4-inheritance.go:49 +0x2bc fp=0xc0007e9810 sp=0xc0007e96d8 pc=0xb245bc
github.com/tliron/puccini/tosca/parser.(*InheritContext).GetInheritTask(0xc0000dc180, 0xc05ee0, 0xc000391970, 0xc000391970)
    /Depot/Projects/RedHat/puccini/tosca/parser/phase4-inheritance.go:49 +0x2bc fp=0xc0007e9948 sp=0xc0007e9810 pc=0xb245bc
github.com/tliron/puccini/tosca/parser.(*Context).GetInheritTasks.func1(0xc05ee0, 0xc000391970, 0x0)
    /Depot/Projects/RedHat/puccini/tosca/parser/phase4-inheritance.go:16 +0x3e fp=0xc0007e9978 sp=0xc0007e9948 pc=0xb291fe
github.com/tliron/puccini/tosca/parser.(*Context).Traverse.func1(0xc05ee0, 0xc000391970, 0xc000528000)
    /Depot/Projects/RedHat/puccini/tosca/parser/work.go:28 +0x112 fp=0xc0007e99f0 sp=0xc0007e9978 pc=0xb29712
github.com/tliron/kutil/reflection.Traverse(0xc05ee0, 0xc000391970, 0xc0007e9bb0)
    /home/emblemparade/go/pkg/mod/github.com/tliron/kutil@v0.1.38/reflection/traverse.go:16 +0x8c fp=0xc0007e9b70 sp=0xc0007e99f0 pc=0xa8c18c
github.com/tliron/puccini/tosca/parser.(*Context).Traverse(0xc000398090, 0xe0c268, 0xc001179c20, 0xc0007e9cf8)
    /Depot/Projects/RedHat/puccini/tosca/parser/work.go:32 +0x125 fp=0xc0007e9cb8 sp=0xc0007e9b70 pc=0xb28825
github.com/tliron/puccini/tosca/parser.(*Context).GetInheritTasks(0xc000398090, 0xc0007e9da0)
    /Depot/Projects/RedHat/puccini/tosca/parser/phase4-inheritance.go:15 +0xf1 fp=0xc0007e9d18 sp=0xc0007e9cb8 pc=0xb24291
github.com/tliron/puccini/tosca/parser.Parse(0xe09bd8, 0xc00039a000, 0x0, 0x0, 0x0, 0x0, 0x0, 0xefb156, 0x2d, 0x438, ...)
    /Depot/Projects/RedHat/puccini/tosca/parser/parse.go:39 +0x34a fp=0xc0007e9e78 sp=0xc0007e9d18 pc=0xb1ffea
github.com/tliron/puccini/puccini-tosca.testCompile.func1(0xc00028e480)
    /Depot/Projects/RedHat/puccini/puccini-tosca/tosca_test.go:84 +0x1d2 fp=0xc0007e9f80 sp=0xc0007e9e78 pc=0xb32152
testing.tRunner(0xc00028e480, 0xc000153b00)
    /Depot/Applications/go/src/testing/testing.go:1193 +0xef fp=0xc0007e9fd0 sp=0xc0007e9f80 pc=0x5231af
runtime.goexit()
    /Depot/Applications/go/src/runtime/asm_amd64.s:1371 +0x1 fp=0xc0007e9fd8 sp=0xc0007e9fd0 pc=0x4741c1
created by testing.(*T).Run
    /Depot/Applications/go/src/testing/testing.go:1238 +0x2b3

goroutine 1 [chan receive]:
testing.(*T).Run(0xc000102900, 0xcb6f34, 0x9, 0xd43a38, 0x4975e6)
    /Depot/Applications/go/src/testing/testing.go:1239 +0x2da
testing.runTests.func1(0xc000102780)
    /Depot/Applications/go/src/testing/testing.go:1511 +0x78
testing.tRunner(0xc000102780, 0xc00019fde0)
    /Depot/Applications/go/src/testing/testing.go:1193 +0xef
testing.runTests(0xc00013c828, 0x11fff40, 0x1, 0x1, 0xc029f8282701224f, 0x254238d63, 0x1390b60, 0xcb9a5e)
    /Depot/Applications/go/src/testing/testing.go:1509 +0x2fe
testing.(*M).Run(0xc000209c80, 0x0)
    /Depot/Applications/go/src/testing/testing.go:1417 +0x1eb
main.main()
    _testmain.go:43 +0x138

goroutine 19 [chan receive]:
testing.tRunner.func1(0xc000102900)
    /Depot/Applications/go/src/testing/testing.go:1159 +0x2bc
testing.tRunner(0xc000102900, 0xd43a38)
    /Depot/Applications/go/src/testing/testing.go:1197 +0x125
created by testing.(*T).Run
    /Depot/Applications/go/src/testing/testing.go:1238 +0x2b3

goroutine 20 [runnable]:
reflect.name.tag(0xb6ec44, 0xc0002488d0, 0x18)
    /Depot/Applications/go/src/reflect/type.go:502 +0x85
reflect.(*structType).Field(0xc75720, 0x4, 0xb6ec47, 0xb, 0x0, 0x0, 0xe0f3e8, 0xc05e40, 0x0, 0x0, ...)
    /Depot/Applications/go/src/reflect/type.go:1197 +0x116
reflect.(*structType).FieldByName(0xc75720, 0xb6ec47, 0xb, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, ...)
    /Depot/Applications/go/src/reflect/type.go:1353 +0x1b7
reflect.(*rtype).FieldByName(0xc75720, 0xb6ec47, 0xb, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, ...)
    /Depot/Applications/go/src/reflect/type.go:939 +0xda
reflect.Value.FieldByName(0xc75720, 0xc000830b00, 0x199, 0xb6ec47, 0xb, 0x0, 0xc000830b00, 0x196)
    /Depot/Applications/go/src/reflect/value.go:904 +0xa5
github.com/tliron/kutil/reflection.Traverse(0xc60b20, 0xc000830b00, 0xc000b15b80)
    /home/emblemparade/go/pkg/mod/github.com/tliron/kutil@v0.1.38/reflection/traverse.go:40 +0x354
github.com/tliron/kutil/reflection.Traverse(0xbf1880, 0xc00037c120, 0xc000b15b80)
    /home/emblemparade/go/pkg/mod/github.com/tliron/kutil@v0.1.38/reflection/traverse.go:58 +0x5cf
github.com/tliron/puccini/tosca.NewHierarchyFor(0xbf1880, 0xc00037c120, 0xc000b15da0, 0xb)
    /Depot/Projects/RedHat/puccini/tosca/hierarchy.go:61 +0xb5
github.com/tliron/puccini/tosca/parser.(*Unit).MergeHierarchies(0xc00041e680, 0xc000b15da0, 0xc00012be00)
    /Depot/Projects/RedHat/puccini/tosca/parser/phase3-hierarchies.go:24 +0x248
github.com/tliron/puccini/tosca/parser.(*Unit).MergeHierarchies(0xc0002ae940, 0xc000b15da0, 0xc00012be00)
    /Depot/Projects/RedHat/puccini/tosca/parser/phase3-hierarchies.go:19 +0xfe
github.com/tliron/puccini/tosca/parser.(*Context).AddHierarchies(...)
    /Depot/Projects/RedHat/puccini/tosca/parser/phase3-hierarchies.go:9
github.com/tliron/puccini/tosca/parser.Parse(0xe09bd8, 0xc00013c840, 0x0, 0x0, 0x0, 0x0, 0x0, 0xefb156, 0x2d, 0x438, ...)
    /Depot/Projects/RedHat/puccini/tosca/parser/parse.go:36 +0x33c
github.com/tliron/puccini/puccini-tosca.testCompile.func1(0xc000102c00)
    /Depot/Projects/RedHat/puccini/puccini-tosca/tosca_test.go:84 +0x1d2
testing.tRunner(0xc000102c00, 0xc000153740)
    /Depot/Applications/go/src/testing/testing.go:1193 +0xef
created by testing.(*T).Run
    /Depot/Applications/go/src/testing/testing.go:1238 +0x2b3

goroutine 21 [chan receive]:
testing.(*testContext).waitParallel(0xc000259400)
    /Depot/Applications/go/src/testing/testing.go:1296 +0xb2
testing.(*T).Parallel(0xc000102f00)
    /Depot/Applications/go/src/testing/testing.go:1060 +0x12e
github.com/tliron/puccini/puccini-tosca.testCompile.func1(0xc000102f00)
    /Depot/Projects/RedHat/puccini/puccini-tosca/tosca_test.go:68 +0x71
testing.tRunner(0xc000102f00, 0xc000153760)
    /Depot/Applications/go/src/testing/testing.go:1193 +0xef
created by testing.(*T).Run
    /Depot/Applications/go/src/testing/testing.go:1238 +0x2b3

goroutine 22 [chan receive]:
testing.(*testContext).waitParallel(0xc000259400)
    /Depot/Applications/go/src/testing/testing.go:1296 +0xb2
testing.(*T).Parallel(0xc000103200)
    /Depot/Applications/go/src/testing/testing.go:1060 +0x12e
github.com/tliron/puccini/puccini-tosca.testCompile.func1(0xc000103200)
    /Depot/Projects/RedHat/puccini/puccini-tosca/tosca_test.go:68 +0x71
testing.tRunner(0xc000103200, 0xc000153780)
    /Depot/Applications/go/src/testing/testing.go:1193 +0xef
created by testing.(*T).Run
    /Depot/Applications/go/src/testing/testing.go:1238 +0x2b3

goroutine 23 [chan receive]:
testing.(*testContext).waitParallel(0xc000259400)
    /Depot/Applications/go/src/testing/testing.go:1296 +0xb2
testing.(*T).Parallel(0xc000103500)
    /Depot/Applications/go/src/testing/testing.go:1060 +0x12e
github.com/tliron/puccini/puccini-tosca.testCompile.func1(0xc000103500)
    /Depot/Projects/RedHat/puccini/puccini-tosca/tosca_test.go:68 +0x71
testing.tRunner(0xc000103500, 0xc0001537c0)
    /Depot/Applications/go/src/testing/testing.go:1193 +0xef
created by testing.(*T).Run
    /Depot/Applications/go/src/testing/testing.go:1238 +0x2b3

goroutine 24 [chan receive]:
testing.(*testContext).waitParallel(0xc000259400)
    /Depot/Applications/go/src/testing/testing.go:1296 +0xb2
testing.(*T).Parallel(0xc000103800)
    /Depot/Applications/go/src/testing/testing.go:1060 +0x12e
github.com/tliron/puccini/puccini-tosca.testCompile.func1(0xc000103800)
    /Depot/Projects/RedHat/puccini/puccini-tosca/tosca_test.go:68 +0x71
testing.tRunner(0xc000103800, 0xc0001537e0)
    /Depot/Applications/go/src/testing/testing.go:1193 +0xef
created by testing.(*T).Run
    /Depot/Applications/go/src/testing/testing.go:1238 +0x2b3

goroutine 25 [chan receive]:
testing.(*testContext).waitParallel(0xc000259400)
    /Depot/Applications/go/src/testing/testing.go:1296 +0xb2
testing.(*T).Parallel(0xc000103b00)
    /Depot/Applications/go/src/testing/testing.go:1060 +0x12e
github.com/tliron/puccini/puccini-tosca.testCompile.func1(0xc000103b00)
    /Depot/Projects/RedHat/puccini/puccini-tosca/tosca_test.go:68 +0x71
testing.tRunner(0xc000103b00, 0xc000153800)
    /Depot/Applications/go/src/testing/testing.go:1193 +0xef
created by testing.(*T).Run
    /Depot/Applications/go/src/testing/testing.go:1238 +0x2b3

goroutine 26 [chan receive]:
testing.(*testContext).waitParallel(0xc000259400)
    /Depot/Applications/go/src/testing/testing.go:1296 +0xb2
testing.(*T).Parallel(0xc000103e00)
    /Depot/Applications/go/src/testing/testing.go:1060 +0x12e
github.com/tliron/puccini/puccini-tosca.testCompile.func1(0xc000103e00)
    /Depot/Projects/RedHat/puccini/puccini-tosca/tosca_test.go:68 +0x71
testing.tRunner(0xc000103e00, 0xc000153820)
    /Depot/Applications/go/src/testing/testing.go:1193 +0xef
created by testing.(*T).Run
    /Depot/Applications/go/src/testing/testing.go:1238 +0x2b3

goroutine 27 [chan receive]:
testing.(*testContext).waitParallel(0xc000259400)
    /Depot/Applications/go/src/testing/testing.go:1296 +0xb2
testing.(*T).Parallel(0xc000270180)
    /Depot/Applications/go/src/testing/testing.go:1060 +0x12e
github.com/tliron/puccini/puccini-tosca.testCompile.func1(0xc000270180)
    /Depot/Projects/RedHat/puccini/puccini-tosca/tosca_test.go:68 +0x71
testing.tRunner(0xc000270180, 0xc000153840)
    /Depot/Applications/go/src/testing/testing.go:1193 +0xef
created by testing.(*T).Run
    /Depot/Applications/go/src/testing/testing.go:1238 +0x2b3

goroutine 28 [chan receive]:
testing.(*testContext).waitParallel(0xc000259400)
    /Depot/Applications/go/src/testing/testing.go:1296 +0xb2
testing.(*T).Parallel(0xc000270480)
    /Depot/Applications/go/src/testing/testing.go:1060 +0x12e
github.com/tliron/puccini/puccini-tosca.testCompile.func1(0xc000270480)
    /Depot/Projects/RedHat/puccini/puccini-tosca/tosca_test.go:68 +0x71
testing.tRunner(0xc000270480, 0xc000153860)
    /Depot/Applications/go/src/testing/testing.go:1193 +0xef
created by testing.(*T).Run
    /Depot/Applications/go/src/testing/testing.go:1238 +0x2b3

goroutine 29 [runnable]:
fmt.(*pp).doPrintf(0xc000e50a90, 0xcc0ee7, 0x17, 0xc000733510, 0x2, 0x2)
    /Depot/Applications/go/src/fmt/print.go:974 +0x124b
fmt.Sprintf(0xcc0ee7, 0x17, 0xc000733510, 0x2, 0x2, 0x10, 0xc000b316f0)
    /Depot/Applications/go/src/fmt/print.go:219 +0x66
github.com/tliron/kutil/logging.SubLogger.Debugf(0xe0c178, 0xc0001bd8c0, 0xcb8668, 0xb, 0xcb621c, 0x7, 0xcc0ee7, 0x17, 0xc000733510, 0x2, ...)
    /home/emblemparade/go/pkg/mod/github.com/tliron/kutil@v0.1.38/logging/logger.go:103 +0x74
github.com/tliron/puccini/tosca/parser.(*InheritContext).GetInheritTask(0xc00000f0b0, 0xc489a0, 0xc00012d7c0, 0xc000dadb90)
    /Depot/Projects/RedHat/puccini/tosca/parser/phase4-inheritance.go:56 +0x5d2
github.com/tliron/puccini/tosca/parser.(*InheritContext).GetInheritTask(0xc00000f0b0, 0xc489a0, 0xc000751b80, 0xc0004b7c08)
    /Depot/Projects/RedHat/puccini/tosca/parser/phase4-inheritance.go:49 +0x2bc
github.com/tliron/puccini/tosca/parser.(*InheritContext).GetInheritTask(0xc00000f0b0, 0xc48fc0, 0xc000365040, 0xc0006f99c8)
    /Depot/Projects/RedHat/puccini/tosca/parser/phase4-inheritance.go:49 +0x2bc
github.com/tliron/puccini/tosca/parser.(*InheritContext).GetInheritTask(0xc00000f0b0, 0xc05ee0, 0xc000582730, 0xc000582730)
    /Depot/Projects/RedHat/puccini/tosca/parser/phase4-inheritance.go:49 +0x2bc
github.com/tliron/puccini/tosca/parser.(*Context).GetInheritTasks.func1(0xc05ee0, 0xc000582730, 0x0)
    /Depot/Projects/RedHat/puccini/tosca/parser/phase4-inheritance.go:16 +0x3e
github.com/tliron/puccini/tosca/parser.(*Context).Traverse.func1(0xc05ee0, 0xc000582730, 0xc00015c630)
    /Depot/Projects/RedHat/puccini/tosca/parser/work.go:28 +0x112
github.com/tliron/kutil/reflection.Traverse(0xc05ee0, 0xc000582730, 0xc000733bb0)
    /home/emblemparade/go/pkg/mod/github.com/tliron/kutil@v0.1.38/reflection/traverse.go:16 +0x8c
github.com/tliron/puccini/tosca/parser.(*Context).Traverse(0xc00058a090, 0xe0c268, 0xc000b09680, 0xc000733cf8)
    /Depot/Projects/RedHat/puccini/tosca/parser/work.go:32 +0x125
github.com/tliron/puccini/tosca/parser.(*Context).GetInheritTasks(0xc00058a090, 0xc000733da0)
    /Depot/Projects/RedHat/puccini/tosca/parser/phase4-inheritance.go:15 +0xf1
github.com/tliron/puccini/tosca/parser.Parse(0xe09bd8, 0xc00058c000, 0x0, 0x0, 0x0, 0x0, 0x0, 0xefb156, 0x2d, 0x438, ...)
    /Depot/Projects/RedHat/puccini/tosca/parser/parse.go:39 +0x34a
github.com/tliron/puccini/puccini-tosca.testCompile.func1(0xc000270780)
    /Depot/Projects/RedHat/puccini/puccini-tosca/tosca_test.go:84 +0x1d2
testing.tRunner(0xc000270780, 0xc000153880)
    /Depot/Applications/go/src/testing/testing.go:1193 +0xef
created by testing.(*T).Run
    /Depot/Applications/go/src/testing/testing.go:1238 +0x2b3

goroutine 30 [chan receive]:
testing.(*testContext).waitParallel(0xc000259400)
    /Depot/Applications/go/src/testing/testing.go:1296 +0xb2
testing.(*T).Parallel(0xc000270a80)
    /Depot/Applications/go/src/testing/testing.go:1060 +0x12e
github.com/tliron/puccini/puccini-tosca.testCompile.func1(0xc000270a80)
    /Depot/Projects/RedHat/puccini/puccini-tosca/tosca_test.go:68 +0x71
testing.tRunner(0xc000270a80, 0xc0001538a0)
    /Depot/Applications/go/src/testing/testing.go:1193 +0xef
created by testing.(*T).Run
    /Depot/Applications/go/src/testing/testing.go:1238 +0x2b3

goroutine 31 [chan receive]:
testing.(*testContext).waitParallel(0xc000259400)
    /Depot/Applications/go/src/testing/testing.go:1296 +0xb2
testing.(*T).Parallel(0xc000270d80)
    /Depot/Applications/go/src/testing/testing.go:1060 +0x12e
github.com/tliron/puccini/puccini-tosca.testCompile.func1(0xc000270d80)
    /Depot/Projects/RedHat/puccini/puccini-tosca/tosca_test.go:68 +0x71
testing.tRunner(0xc000270d80, 0xc0001538c0)
    /Depot/Applications/go/src/testing/testing.go:1193 +0xef
created by testing.(*T).Run
    /Depot/Applications/go/src/testing/testing.go:1238 +0x2b3

goroutine 32 [chan receive]:
testing.(*testContext).waitParallel(0xc000259400)
    /Depot/Applications/go/src/testing/testing.go:1296 +0xb2
testing.(*T).Parallel(0xc000271080)
    /Depot/Applications/go/src/testing/testing.go:1060 +0x12e
github.com/tliron/puccini/puccini-tosca.testCompile.func1(0xc000271080)
    /Depot/Projects/RedHat/puccini/puccini-tosca/tosca_test.go:68 +0x71
testing.tRunner(0xc000271080, 0xc0001538e0)
    /Depot/Applications/go/src/testing/testing.go:1193 +0xef
created by testing.(*T).Run
    /Depot/Applications/go/src/testing/testing.go:1238 +0x2b3

goroutine 33 [chan receive]:
testing.(*testContext).waitParallel(0xc000259400)
    /Depot/Applications/go/src/testing/testing.go:1296 +0xb2
testing.(*T).Parallel(0xc000271380)
    /Depot/Applications/go/src/testing/testing.go:1060 +0x12e
github.com/tliron/puccini/puccini-tosca.testCompile.func1(0xc000271380)
    /Depot/Projects/RedHat/puccini/puccini-tosca/tosca_test.go:68 +0x71
testing.tRunner(0xc000271380, 0xc000153900)
    /Depot/Applications/go/src/testing/testing.go:1193 +0xef
created by testing.(*T).Run
    /Depot/Applications/go/src/testing/testing.go:1238 +0x2b3

goroutine 34 [chan receive]:
testing.(*testContext).waitParallel(0xc000259400)
    /Depot/Applications/go/src/testing/testing.go:1296 +0xb2
testing.(*T).Parallel(0xc000271680)
    /Depot/Applications/go/src/testing/testing.go:1060 +0x12e
github.com/tliron/puccini/puccini-tosca.testCompile.func1(0xc000271680)
    /Depot/Projects/RedHat/puccini/puccini-tosca/tosca_test.go:68 +0x71
testing.tRunner(0xc000271680, 0xc000153920)
    /Depot/Applications/go/src/testing/testing.go:1193 +0xef
created by testing.(*T).Run
    /Depot/Applications/go/src/testing/testing.go:1238 +0x2b3

goroutine 35 [chan receive]:
testing.(*testContext).waitParallel(0xc000259400)
    /Depot/Applications/go/src/testing/testing.go:1296 +0xb2
testing.(*T).Parallel(0xc000271980)
    /Depot/Applications/go/src/testing/testing.go:1060 +0x12e
github.com/tliron/puccini/puccini-tosca.testCompile.func1(0xc000271980)
    /Depot/Projects/RedHat/puccini/puccini-tosca/tosca_test.go:68 +0x71
testing.tRunner(0xc000271980, 0xc000153940)
    /Depot/Applications/go/src/testing/testing.go:1193 +0xef
created by testing.(*T).Run
    /Depot/Applications/go/src/testing/testing.go:1238 +0x2b3

goroutine 36 [chan receive]:
testing.(*testContext).waitParallel(0xc000259400)
    /Depot/Applications/go/src/testing/testing.go:1296 +0xb2
testing.(*T).Parallel(0xc000271c80)
    /Depot/Applications/go/src/testing/testing.go:1060 +0x12e
github.com/tliron/puccini/puccini-tosca.testCompile.func1(0xc000271c80)
    /Depot/Projects/RedHat/puccini/puccini-tosca/tosca_test.go:68 +0x71
testing.tRunner(0xc000271c80, 0xc000153960)
    /Depot/Applications/go/src/testing/testing.go:1193 +0xef
created by testing.(*T).Run
    /Depot/Applications/go/src/testing/testing.go:1238 +0x2b3

goroutine 37 [runnable]:
reflect.copyVal(0xb9d060, 0x18, 0xc000392c48, 0xc0008b4090, 0xc000b19a50, 0xc000b19a60)
    /Depot/Applications/go/src/reflect/value.go:1305 +0xb2
reflect.Value.MapKeys(0xbf8600, 0xc00039f848, 0x195, 0xc000b8c0d0, 0xc000b19b58, 0x47cf45)
    /Depot/Applications/go/src/reflect/value.go:1226 +0x165
github.com/tliron/puccini/tosca/parser.(*InheritField).InheritStructsFromMap(0xc000235d50)
    /Depot/Projects/RedHat/puccini/tosca/parser/phase4-inheritance.go:263 +0x56
github.com/tliron/puccini/tosca/parser.(*InheritField).Inherit(0xc000235d50)
    /Depot/Projects/RedHat/puccini/tosca/parser/phase4-inheritance.go:161 +0x1d5
github.com/tliron/puccini/tosca/parser.(*InheritContext).NewExecutor.func1(0xc000753440)
    /Depot/Projects/RedHat/puccini/tosca/parser/phase4-inheritance.go:72 +0x1d5
github.com/tliron/puccini/tosca/parser.(*Task).Execute(...)
    /Depot/Projects/RedHat/puccini/tosca/parser/tasks.go:38
github.com/tliron/puccini/tosca/parser.Tasks.Drain(0xc0003f6510)
    /Depot/Projects/RedHat/puccini/tosca/parser/tasks.go:125 +0xf2
github.com/tliron/puccini/tosca/parser.Parse(0xe09bd8, 0xc00000e018, 0x0, 0x0, 0x0, 0x0, 0x0, 0xefb156, 0x2d, 0x438, ...)
    /Depot/Projects/RedHat/puccini/tosca/parser/parse.go:40 +0x358
github.com/tliron/puccini/puccini-tosca.testCompile.func1(0xc00027e000)
    /Depot/Projects/RedHat/puccini/puccini-tosca/tosca_test.go:84 +0x1d2
testing.tRunner(0xc00027e000, 0xc000153980)
    /Depot/Applications/go/src/testing/testing.go:1193 +0xef
created by testing.(*T).Run
    /Depot/Applications/go/src/testing/testing.go:1238 +0x2b3

goroutine 38 [chan receive]:
testing.(*testContext).waitParallel(0xc000259400)
    /Depot/Applications/go/src/testing/testing.go:1296 +0xb2
testing.(*T).Parallel(0xc00027e300)
    /Depot/Applications/go/src/testing/testing.go:1060 +0x12e
github.com/tliron/puccini/puccini-tosca.testCompile.func1(0xc00027e300)
    /Depot/Projects/RedHat/puccini/puccini-tosca/tosca_test.go:68 +0x71
testing.tRunner(0xc00027e300, 0xc0001539a0)
    /Depot/Applications/go/src/testing/testing.go:1193 +0xef
created by testing.(*T).Run
    /Depot/Applications/go/src/testing/testing.go:1238 +0x2b3

goroutine 39 [chan receive]:
testing.(*testContext).waitParallel(0xc000259400)
    /Depot/Applications/go/src/testing/testing.go:1296 +0xb2
testing.(*T).Parallel(0xc00027e600)
    /Depot/Applications/go/src/testing/testing.go:1060 +0x12e
github.com/tliron/puccini/puccini-tosca.testCompile.func1(0xc00027e600)
    /Depot/Projects/RedHat/puccini/puccini-tosca/tosca_test.go:68 +0x71
testing.tRunner(0xc00027e600, 0xc0001539c0)
    /Depot/Applications/go/src/testing/testing.go:1193 +0xef
created by testing.(*T).Run
    /Depot/Applications/go/src/testing/testing.go:1238 +0x2b3

goroutine 40 [chan receive]:
testing.(*testContext).waitParallel(0xc000259400)
    /Depot/Applications/go/src/testing/testing.go:1296 +0xb2
testing.(*T).Parallel(0xc00027e900)
    /Depot/Applications/go/src/testing/testing.go:1060 +0x12e
github.com/tliron/puccini/puccini-tosca.testCompile.func1(0xc00027e900)
    /Depot/Projects/RedHat/puccini/puccini-tosca/tosca_test.go:68 +0x71
testing.tRunner(0xc00027e900, 0xc0001539e0)
    /Depot/Applications/go/src/testing/testing.go:1193 +0xef
created by testing.(*T).Run
    /Depot/Applications/go/src/testing/testing.go:1238 +0x2b3

goroutine 41 [runnable]:
reflect.StructTag.Lookup(0xb71b82, 0x1e, 0xcb56b5, 0x6, 0x0, 0x0, 0xc000671600)
    /Depot/Applications/go/src/reflect/type.go:1131 +0x258
github.com/tliron/kutil/reflection.Traverse(0xc05620, 0xc0006716c0, 0xc000737ce0)
    /home/emblemparade/go/pkg/mod/github.com/tliron/kutil@v0.1.38/reflection/traverse.go:36 +0x308
github.com/tliron/kutil/reflection.Traverse(0xc48d20, 0xc000678400, 0xc000737ce0)
    /home/emblemparade/go/pkg/mod/github.com/tliron/kutil@v0.1.38/reflection/traverse.go:66 +0x75c
github.com/tliron/kutil/reflection.Traverse(0xc05ee0, 0xc000490320, 0xc000737ce0)
    /home/emblemparade/go/pkg/mod/github.com/tliron/kutil@v0.1.38/reflection/traverse.go:58 +0x5cf
github.com/tliron/puccini/tosca/parser.Render(0xc05ee0, 0xc000490320, 0x0, 0xc000737d90, 0x0)
    /Depot/Projects/RedHat/puccini/tosca/parser/phase5-rendering.go:24 +0x6f
github.com/tliron/puccini/tosca/parser.(*Context).Render(...)
    /Depot/Projects/RedHat/puccini/tosca/parser/phase5-rendering.go:9
github.com/tliron/puccini/tosca/parser.Parse(0xe09bd8, 0xc0004a6000, 0x0, 0x0, 0x0, 0x0, 0x0, 0xefb156, 0x2d, 0x438, ...)
    /Depot/Projects/RedHat/puccini/tosca/parser/parse.go:45 +0x3a5
github.com/tliron/puccini/puccini-tosca.testCompile.func1(0xc00027ec00)
    /Depot/Projects/RedHat/puccini/puccini-tosca/tosca_test.go:84 +0x1d2
testing.tRunner(0xc00027ec00, 0xc000153a00)
    /Depot/Applications/go/src/testing/testing.go:1193 +0xef
created by testing.(*T).Run
    /Depot/Applications/go/src/testing/testing.go:1238 +0x2b3

goroutine 42 [chan receive]:
testing.(*testContext).waitParallel(0xc000259400)
    /Depot/Applications/go/src/testing/testing.go:1296 +0xb2
testing.(*T).Parallel(0xc00027ef00)
    /Depot/Applications/go/src/testing/testing.go:1060 +0x12e
github.com/tliron/puccini/puccini-tosca.testCompile.func1(0xc00027ef00)
    /Depot/Projects/RedHat/puccini/puccini-tosca/tosca_test.go:68 +0x71
testing.tRunner(0xc00027ef00, 0xc000153a20)
    /Depot/Applications/go/src/testing/testing.go:1193 +0xef
created by testing.(*T).Run
    /Depot/Applications/go/src/testing/testing.go:1238 +0x2b3

goroutine 43 [chan receive]:
testing.(*testContext).waitParallel(0xc000259400)
    /Depot/Applications/go/src/testing/testing.go:1296 +0xb2
testing.(*T).Parallel(0xc00027f200)
    /Depot/Applications/go/src/testing/testing.go:1060 +0x12e
github.com/tliron/puccini/puccini-tosca.testCompile.func1(0xc00027f200)
    /Depot/Projects/RedHat/puccini/puccini-tosca/tosca_test.go:68 +0x71
testing.tRunner(0xc00027f200, 0xc000153a40)
    /Depot/Applications/go/src/testing/testing.go:1193 +0xef
created by testing.(*T).Run
    /Depot/Applications/go/src/testing/testing.go:1238 +0x2b3

goroutine 44 [chan receive]:
testing.(*testContext).waitParallel(0xc000259400)
    /Depot/Applications/go/src/testing/testing.go:1296 +0xb2
testing.(*T).Parallel(0xc00027f500)
    /Depot/Applications/go/src/testing/testing.go:1060 +0x12e
github.com/tliron/puccini/puccini-tosca.testCompile.func1(0xc00027f500)
    /Depot/Projects/RedHat/puccini/puccini-tosca/tosca_test.go:68 +0x71
testing.tRunner(0xc00027f500, 0xc000153a60)
    /Depot/Applications/go/src/testing/testing.go:1193 +0xef
created by testing.(*T).Run
    /Depot/Applications/go/src/testing/testing.go:1238 +0x2b3

goroutine 45 [runnable]:
reflect.Value.FieldByIndex(0xc7c240, 0xc000365cc0, 0x199, 0xc000628b70, 0x1, 0x1, 0x0, 0xe0f3e8, 0xbf8480)
    /Depot/Applications/go/src/reflect/value.go:880 +0x370
reflect.Value.FieldByName(0xc7c240, 0xc000365cc0, 0x199, 0xbd6b01, 0x14, 0xc0006b76e0, 0xc17740, 0xc0006b76e0)
    /Depot/Applications/go/src/reflect/value.go:905 +0x16d
github.com/tliron/puccini/tosca/parser.(*InheritContext).GetDependencies(0xc0004a73f8, 0xc48fc0, 0xc000365cc0, 0xc000d38098)
    /Depot/Projects/RedHat/puccini/tosca/parser/phase4-inheritance.go:110 +0x2a9
github.com/tliron/puccini/tosca/parser.(*InheritContext).GetInheritTask(0xc0004a73f8, 0xc48fc0, 0xc000365cc0, 0xc00009e690)
    /Depot/Projects/RedHat/puccini/tosca/parser/phase4-inheritance.go:48 +0x245
github.com/tliron/puccini/tosca/parser.(*InheritContext).GetInheritTask(0xc0004a73f8, 0xc48fc0, 0xc000365040, 0xc00050eba0)
    /Depot/Projects/RedHat/puccini/tosca/parser/phase4-inheritance.go:49 +0x2bc
github.com/tliron/puccini/tosca/parser.(*InheritContext).GetInheritTask(0xc0004a73f8, 0xc05ee0, 0xc0003106e0, 0xc0003106e0)
    /Depot/Projects/RedHat/puccini/tosca/parser/phase4-inheritance.go:49 +0x2bc
github.com/tliron/puccini/tosca/parser.(*Context).GetInheritTasks.func1(0xc05ee0, 0xc0003106e0, 0x0)
    /Depot/Projects/RedHat/puccini/tosca/parser/phase4-inheritance.go:16 +0x3e
github.com/tliron/puccini/tosca/parser.(*Context).Traverse.func1(0xc05ee0, 0xc0003106e0, 0xc00032a0d8)
    /Depot/Projects/RedHat/puccini/tosca/parser/work.go:28 +0x112
github.com/tliron/kutil/reflection.Traverse(0xc05ee0, 0xc0003106e0, 0xc0007e7bb0)
    /home/emblemparade/go/pkg/mod/github.com/tliron/kutil@v0.1.38/reflection/traverse.go:16 +0x8c
github.com/tliron/puccini/tosca/parser.(*Context).Traverse(0xc000320090, 0xe0c268, 0xc00050e780, 0xc0007e7cf8)
    /Depot/Projects/RedHat/puccini/tosca/parser/work.go:32 +0x125
github.com/tliron/puccini/tosca/parser.(*Context).GetInheritTasks(0xc000320090, 0xc0007e7da0)
    /Depot/Projects/RedHat/puccini/tosca/parser/phase4-inheritance.go:15 +0xf1
github.com/tliron/puccini/tosca/parser.Parse(0xe09bd8, 0xc000322000, 0x0, 0x0, 0x0, 0x0, 0x0, 0xefb156, 0x2d, 0x438, ...)
    /Depot/Projects/RedHat/puccini/tosca/parser/parse.go:39 +0x34a
github.com/tliron/puccini/puccini-tosca.testCompile.func1(0xc00027f800)
    /Depot/Projects/RedHat/puccini/puccini-tosca/tosca_test.go:84 +0x1d2
testing.tRunner(0xc00027f800, 0xc000153a80)
    /Depot/Applications/go/src/testing/testing.go:1193 +0xef
created by testing.(*T).Run
    /Depot/Applications/go/src/testing/testing.go:1238 +0x2b3

goroutine 46 [chan receive]:
testing.(*testContext).waitParallel(0xc000259400)
    /Depot/Applications/go/src/testing/testing.go:1296 +0xb2
testing.(*T).Parallel(0xc00027fb00)
    /Depot/Applications/go/src/testing/testing.go:1060 +0x12e
github.com/tliron/puccini/puccini-tosca.testCompile.func1(0xc00027fb00)
    /Depot/Projects/RedHat/puccini/puccini-tosca/tosca_test.go:68 +0x71
testing.tRunner(0xc00027fb00, 0xc000153aa0)
    /Depot/Applications/go/src/testing/testing.go:1193 +0xef
created by testing.(*T).Run
    /Depot/Applications/go/src/testing/testing.go:1238 +0x2b3

goroutine 47 [runnable]:
github.com/tliron/puccini/tosca.(*ScriptletNamespace).Merge(0xc000bb9320, 0xc0001535e0)
    /Depot/Projects/RedHat/puccini/tosca/scriptlet.go:161 +0x12b
github.com/tliron/puccini/tosca/grammars/tosca_v1_3.ReadServiceTemplate(0xc00084edc0, 0xc0001bd410, 0xcb4a0f)
    /Depot/Projects/RedHat/puccini/tosca/grammars/tosca_v1_3/service-template.go:22 +0x13b
github.com/tliron/puccini/tosca/parser.(*Context).read(0xc00091ebd0, 0x0, 0xc00084edc0, 0x0, 0x0, 0xcb4a0f, 0x5, 0x0, 0x0, 0x0, ...)
    /Depot/Projects/RedHat/puccini/tosca/parser/phase1-read.go:78 +0x4d4
github.com/tliron/puccini/tosca/parser.(*Context).ReadRoot(0xc00091ebd0, 0xe09bd8, 0xc000322f90, 0x0, 0x0, 0x18)
    /Depot/Projects/RedHat/puccini/tosca/parser/phase1-read.go:24 +0x2c5
github.com/tliron/puccini/tosca/parser.Parse(0xe09bd8, 0xc000322f90, 0x0, 0x0, 0x0, 0x0, 0x0, 0xefb156, 0x2d, 0x438, ...)
    /Depot/Projects/RedHat/puccini/tosca/parser/parse.go:18 +0x1a9
github.com/tliron/puccini/puccini-tosca.testCompile.func1(0xc00027fe00)
    /Depot/Projects/RedHat/puccini/puccini-tosca/tosca_test.go:84 +0x1d2
testing.tRunner(0xc00027fe00, 0xc000153ac0)
    /Depot/Applications/go/src/testing/testing.go:1193 +0xef
created by testing.(*T).Run
    /Depot/Applications/go/src/testing/testing.go:1238 +0x2b3

goroutine 48 [chan receive]:
testing.(*testContext).waitParallel(0xc000259400)
    /Depot/Applications/go/src/testing/testing.go:1296 +0xb2
testing.(*T).Parallel(0xc00028e180)
    /Depot/Applications/go/src/testing/testing.go:1060 +0x12e
github.com/tliron/puccini/puccini-tosca.testCompile.func1(0xc00028e180)
    /Depot/Projects/RedHat/puccini/puccini-tosca/tosca_test.go:68 +0x71
testing.tRunner(0xc00028e180, 0xc000153ae0)
    /Depot/Applications/go/src/testing/testing.go:1193 +0xef
created by testing.(*T).Run
    /Depot/Applications/go/src/testing/testing.go:1238 +0x2b3

goroutine 50 [chan receive]:
testing.(*testContext).waitParallel(0xc000259400)
    /Depot/Applications/go/src/testing/testing.go:1296 +0xb2
testing.(*T).Parallel(0xc00028e780)
    /Depot/Applications/go/src/testing/testing.go:1060 +0x12e
github.com/tliron/puccini/puccini-tosca.testCompile.func1(0xc00028e780)
    /Depot/Projects/RedHat/puccini/puccini-tosca/tosca_test.go:68 +0x71
testing.tRunner(0xc00028e780, 0xc000153b20)
    /Depot/Applications/go/src/testing/testing.go:1193 +0xef
created by testing.(*T).Run
    /Depot/Applications/go/src/testing/testing.go:1238 +0x2b3

goroutine 51 [runnable]:
github.com/dop251/goja/parser.(*_parser).scan(0xc000eb0b40, 0x0, 0x0, 0x0, 0x1, 0xc0007dfe70, 0x0)
    /home/emblemparade/go/pkg/mod/github.com/dop251/goja@v0.0.0-20210427212725-462d53687b0d/parser/lexer.go:194 +0xe75
github.com/dop251/goja/parser.(*_parser).next(...)
    /home/emblemparade/go/pkg/mod/github.com/dop251/goja@v0.0.0-20210427212725-462d53687b0d/parser/parser.go:224
github.com/dop251/goja/parser.(*_parser).parseArgumentList(0xc000eb0b40, 0xb, 0xa40, 0x4c5bad, 0x203000, 0xc0004d0a3f)
    /home/emblemparade/go/pkg/mod/github.com/dop251/goja@v0.0.0-20210427212725-462d53687b0d/parser/expression.go:362 +0x125
github.com/dop251/goja/parser.(*_parser).parseCallExpression(0xc000eb0b40, 0xe029e0, 0xc00058d578, 0x28, 0xc27820)
    /home/emblemparade/go/pkg/mod/github.com/dop251/goja@v0.0.0-20210427212725-462d53687b0d/parser/expression.go:370 +0x2f
github.com/dop251/goja/parser.(*_parser).parseLeftHandSideExpressionAllowCall(0xc000eb0b40, 0x0, 0x0)
    /home/emblemparade/go/pkg/mod/github.com/dop251/goja@v0.0.0-20210427212725-462d53687b0d/parser/expression.go:490 +0xb9
github.com/dop251/goja/parser.(*_parser).parsePostfixExpression(0xc000eb0b40, 0x122ab60, 0x0)
    /home/emblemparade/go/pkg/mod/github.com/dop251/goja@v0.0.0-20210427212725-462d53687b0d/parser/expression.go:500 +0x32
github.com/dop251/goja/parser.(*_parser).parseUnaryExpression(0xc000eb0b40, 0x6, 0xc000eb0b98)
    /home/emblemparade/go/pkg/mod/github.com/dop251/goja@v0.0.0-20210427212725-462d53687b0d/parser/expression.go:562 +0x185
github.com/dop251/goja/parser.(*_parser).parseMultiplicativeExpression(0xc000eb0b40, 0xe027a0, 0xc000ef13c8)
    /home/emblemparade/go/pkg/mod/github.com/dop251/goja@v0.0.0-20210427212725-462d53687b0d/parser/expression.go:567 +0x4e
github.com/dop251/goja/parser.(*_parser).parseAdditiveExpression(0xc000eb0b40, 0x8, 0xc000ef1470)
    /home/emblemparade/go/pkg/mod/github.com/dop251/goja@v0.0.0-20210427212725-462d53687b0d/parser/expression.go:585 +0x4e
github.com/dop251/goja/parser.(*_parser).parseShiftExpression(0xc000eb0b40, 0xc00056b180, 0x8c5200)
    /home/emblemparade/go/pkg/mod/github.com/dop251/goja@v0.0.0-20210427212725-462d53687b0d/parser/expression.go:602 +0x4e
github.com/dop251/goja/parser.(*_parser).parseRelationalExpression(0xc000eb0b40, 0x0, 0x0)
    /home/emblemparade/go/pkg/mod/github.com/dop251/goja@v0.0.0-20210427212725-462d53687b0d/parser/expression.go:620 +0x71
github.com/dop251/goja/parser.(*_parser).parseEqualityExpression(0xc000eb0b40, 0x203000, 0x8c53b3)
    /home/emblemparade/go/pkg/mod/github.com/dop251/goja@v0.0.0-20210427212725-462d53687b0d/parser/expression.go:664 +0x4e
github.com/dop251/goja/parser.(*_parser).parseBitwiseAndExpression(0xc000eb0b40, 0xc000380000, 0x0)
    /home/emblemparade/go/pkg/mod/github.com/dop251/goja@v0.0.0-20210427212725-462d53687b0d/parser/expression.go:683 +0x4e
github.com/dop251/goja/parser.(*_parser).parseBitwiseExclusiveOrExpression(0xc000eb0b40, 0xc00085e8a0, 0x8c5400)
    /home/emblemparade/go/pkg/mod/github.com/dop251/goja@v0.0.0-20210427212725-462d53687b0d/parser/expression.go:700 +0x4e
github.com/dop251/goja/parser.(*_parser).parseBitwiseOrExpression(0xc000eb0b40, 0xc00056b180, 0x8c5480)
    /home/emblemparade/go/pkg/mod/github.com/dop251/goja@v0.0.0-20210427212725-462d53687b0d/parser/expression.go:717 +0x4e
github.com/dop251/goja/parser.(*_parser).parseLogicalAndExpression(0xc000eb0b40, 0xc00056b180, 0x8c5500)
    /home/emblemparade/go/pkg/mod/github.com/dop251/goja@v0.0.0-20210427212725-462d53687b0d/parser/expression.go:734 +0x4e
github.com/dop251/goja/parser.(*_parser).parseLogicalOrExpression(0xc000eb0b40, 0xc00056b180, 0x8c5580)
    /home/emblemparade/go/pkg/mod/github.com/dop251/goja@v0.0.0-20210427212725-462d53687b0d/parser/expression.go:751 +0x4e
github.com/dop251/goja/parser.(*_parser).parseConditionlExpression(0xc000eb0b40, 0x8c5600, 0xc000eb0b40)
    /home/emblemparade/go/pkg/mod/github.com/dop251/goja@v0.0.0-20210427212725-462d53687b0d/parser/expression.go:767 +0x2f
github.com/dop251/goja/parser.(*_parser).parseAssignmentExpression(0xc000eb0b40, 0x8c5600, 0x8)
    /home/emblemparade/go/pkg/mod/github.com/dop251/goja@v0.0.0-20210427212725-462d53687b0d/parser/expression.go:787 +0x4f
github.com/dop251/goja/parser.(*_parser).parseExpression(0xc000eb0b40, 0xb, 0xe100000000000008)
    /home/emblemparade/go/pkg/mod/github.com/dop251/goja@v0.0.0-20210427212725-462d53687b0d/parser/expression.go:841 +0x6b
github.com/dop251/goja/parser.(*_parser).parseStatement(0xc000eb0b40, 0xc0004d0a3f, 0xc0004d0a3f)
    /home/emblemparade/go/pkg/mod/github.com/dop251/goja@v0.0.0-20210427212725-462d53687b0d/parser/statement.go:91 +0x87
github.com/dop251/goja/parser.(*_parser).parseStatementList(0xc000eb0b40, 0x31, 0xa3a, 0xa3a)
    /home/emblemparade/go/pkg/mod/github.com/dop251/goja@v0.0.0-20210427212725-462d53687b0d/parser/statement.go:33 +0x74
github.com/dop251/goja/parser.(*_parser).parseBlockStatement(0xc000eb0b40, 0x34)
    /home/emblemparade/go/pkg/mod/github.com/dop251/goja@v0.0.0-20210427212725-462d53687b0d/parser/statement.go:19 +0x6d
github.com/dop251/goja/parser.(*_parser).parseIfStatement(0xc000eb0b40, 0xc0007dfe20, 0xc00085e840)
    /home/emblemparade/go/pkg/mod/github.com/dop251/goja@v0.0.0-20210427212725-462d53687b0d/parser/statement.go:621 +0xdf
github.com/dop251/goja/parser.(*_parser).parseStatement(0xc000eb0b40, 0xe028c0, 0xc0007dfe20)
    /home/emblemparade/go/pkg/mod/github.com/dop251/goja@v0.0.0-20210427212725-462d53687b0d/parser/statement.go:52 +0x646
github.com/dop251/goja/parser.(*_parser).parseStatementList(0xc000eb0b40, 0x31, 0x827, 0x701)
    /home/emblemparade/go/pkg/mod/github.com/dop251/goja@v0.0.0-20210427212725-462d53687b0d/parser/statement.go:33 +0x74
github.com/dop251/goja/parser.(*_parser).parseBlockStatement(0xc000eb0b40, 0xc00056af40)
    /home/emblemparade/go/pkg/mod/github.com/dop251/goja@v0.0.0-20210427212725-462d53687b0d/parser/statement.go:19 +0x6d
github.com/dop251/goja/parser.(*_parser).parseFunctionBlock(0xc000eb0b40, 0xc0008dc910)
    /home/emblemparade/go/pkg/mod/github.com/dop251/goja@v0.0.0-20210427212725-462d53687b0d/parser/statement.go:229 +0xa5
github.com/dop251/goja/parser.(*_parser).parseFunction(0xc000eb0b40, 0xc0007dfb01, 0xc00056af00)
    /home/emblemparade/go/pkg/mod/github.com/dop251/goja@v0.0.0-20210427212725-462d53687b0d/parser/statement.go:214 +0xd3
github.com/dop251/goja/parser.(*_parser).parseStatement(0xc000eb0b40, 0xe028c0, 0xc0007dfb10)
    /home/emblemparade/go/pkg/mod/github.com/dop251/goja@v0.0.0-20210427212725-462d53687b0d/parser/statement.go:79 +0xa10
github.com/dop251/goja/parser.(*_parser).parseStatementList(0xc000eb0b40, 0x31, 0x56, 0x1)
    /home/emblemparade/go/pkg/mod/github.com/dop251/goja@v0.0.0-20210427212725-462d53687b0d/parser/statement.go:33 +0x74
github.com/dop251/goja/parser.(*_parser).parseBlockStatement(0xc000eb0b40, 0xc000679f40)
    /home/emblemparade/go/pkg/mod/github.com/dop251/goja@v0.0.0-20210427212725-462d53687b0d/parser/statement.go:19 +0x6d
github.com/dop251/goja/parser.(*_parser).parseFunctionBlock(0xc000eb0b40, 0xc0008dc6e0)
    /home/emblemparade/go/pkg/mod/github.com/dop251/goja@v0.0.0-20210427212725-462d53687b0d/parser/statement.go:229 +0xa5
github.com/dop251/goja/parser.(*_parser).parseFunction(0xc000eb0b40, 0x78dc00, 0xc0005c3f10)
    /home/emblemparade/go/pkg/mod/github.com/dop251/goja@v0.0.0-20210427212725-462d53687b0d/parser/statement.go:214 +0xd3
github.com/dop251/goja/parser.(*_parser).parsePrimaryExpression(0xc000eb0b40, 0x98, 0xb9d060)
    /home/emblemparade/go/pkg/mod/github.com/dop251/goja@v0.0.0-20210427212725-462d53687b0d/parser/expression.go:96 +0xaa8
github.com/dop251/goja/parser.(*_parser).parseLeftHandSideExpressionAllowCall(0xc000eb0b40, 0x0, 0x0)
    /home/emblemparade/go/pkg/mod/github.com/dop251/goja@v0.0.0-20210427212725-462d53687b0d/parser/expression.go:481 +0x145
github.com/dop251/goja/parser.(*_parser).parsePostfixExpression(0xc000eb0b40, 0x0, 0xc000cc4290)
    /home/emblemparade/go/pkg/mod/github.com/dop251/goja@v0.0.0-20210427212725-462d53687b0d/parser/expression.go:500 +0x32
github.com/dop251/goja/parser.(*_parser).parseUnaryExpression(0xc000eb0b40, 0x18, 0x64)
    /home/emblemparade/go/pkg/mod/github.com/dop251/goja@v0.0.0-20210427212725-462d53687b0d/parser/expression.go:562 +0x185
github.com/dop251/goja/parser.(*_parser).parseMultiplicativeExpression(0xc000eb0b40, 0xc000cc4470, 0x82dd1e)
    /home/emblemparade/go/pkg/mod/github.com/dop251/goja@v0.0.0-20210427212725-462d53687b0d/parser/expression.go:567 +0x4e
github.com/dop251/goja/parser.(*_parser).parseAdditiveExpression(0xc000eb0b40, 0x1a920263dabe5857, 0xffffffffffffffff)
    /home/emblemparade/go/pkg/mod/github.com/dop251/goja@v0.0.0-20210427212725-462d53687b0d/parser/expression.go:585 +0x4e
github.com/dop251/goja/parser.(*_parser).parseShiftExpression(0xc000eb0b40, 0xc00058c738, 0xc000f9ee20)
    /home/emblemparade/go/pkg/mod/github.com/dop251/goja@v0.0.0-20210427212725-462d53687b0d/parser/expression.go:602 +0x4e
github.com/dop251/goja/parser.(*_parser).parseRelationalExpression(0xc000eb0b40, 0x0, 0x0)
    /home/emblemparade/go/pkg/mod/github.com/dop251/goja@v0.0.0-20210427212725-462d53687b0d/parser/expression.go:620 +0x71
github.com/dop251/goja/parser.(*_parser).parseEqualityExpression(0xc000eb0b40, 0xc000cc4718, 0x7f2d786d7e08)
    /home/emblemparade/go/pkg/mod/github.com/dop251/goja@v0.0.0-20210427212725-462d53687b0d/parser/expression.go:664 +0x4e
github.com/dop251/goja/parser.(*_parser).parseBitwiseAndExpression(0xc000eb0b40, 0x30, 0xc74fa0)
    /home/emblemparade/go/pkg/mod/github.com/dop251/goja@v0.0.0-20210427212725-462d53687b0d/parser/expression.go:683 +0x4e
github.com/dop251/goja/parser.(*_parser).parseBitwiseExclusiveOrExpression(0xc000eb0b40, 0x13c6188, 0x0)
    /home/emblemparade/go/pkg/mod/github.com/dop251/goja@v0.0.0-20210427212725-462d53687b0d/parser/expression.go:700 +0x4e
github.com/dop251/goja/parser.(*_parser).parseBitwiseOrExpression(0xc000eb0b40, 0x7f2d7b0d3558, 0x110)
    /home/emblemparade/go/pkg/mod/github.com/dop251/goja@v0.0.0-20210427212725-462d53687b0d/parser/expression.go:717 +0x4e
github.com/dop251/goja/parser.(*_parser).parseLogicalAndExpression(0xc000eb0b40, 0xc0003b1e60, 0xc000cc49b0)
    /home/emblemparade/go/pkg/mod/github.com/dop251/goja@v0.0.0-20210427212725-462d53687b0d/parser/expression.go:734 +0x4e
github.com/dop251/goja/parser.(*_parser).parseLogicalOrExpression(0xc000eb0b40, 0x0, 0x0)
    /home/emblemparade/go/pkg/mod/github.com/dop251/goja@v0.0.0-20210427212725-462d53687b0d/parser/expression.go:751 +0x4e
github.com/dop251/goja/parser.(*_parser).parseConditionlExpression(0xc000eb0b40, 0x8, 0x1)
    /home/emblemparade/go/pkg/mod/github.com/dop251/goja@v0.0.0-20210427212725-462d53687b0d/parser/expression.go:767 +0x2f
github.com/dop251/goja/parser.(*_parser).parseAssignmentExpression(0xc000eb0b40, 0x0, 0xc0003b1b00)
    /home/emblemparade/go/pkg/mod/github.com/dop251/goja@v0.0.0-20210427212725-462d53687b0d/parser/expression.go:787 +0x4f
github.com/dop251/goja/parser.(*_parser).parseExpression(0xc000eb0b40, 0x2f, 0x1)
    /home/emblemparade/go/pkg/mod/github.com/dop251/goja@v0.0.0-20210427212725-462d53687b0d/parser/expression.go:841 +0x6b
github.com/dop251/goja/parser.(*_parser).parsePrimaryExpression(0xc000eb0b40, 0x0, 0xc000cc4c40)
    /home/emblemparade/go/pkg/mod/github.com/dop251/goja@v0.0.0-20210427212725-462d53687b0d/parser/expression.go:87 +0xa16
github.com/dop251/goja/parser.(*_parser).parseLeftHandSideExpressionAllowCall(0xc000eb0b40, 0x0, 0x0)
    /home/emblemparade/go/pkg/mod/github.com/dop251/goja@v0.0.0-20210427212725-462d53687b0d/parser/expression.go:481 +0x145
github.com/dop251/goja/parser.(*_parser).parsePostfixExpression(0xc000eb0b40, 0x203000, 0x0)
    /home/emblemparade/go/pkg/mod/github.com/dop251/goja@v0.0.0-20210427212725-462d53687b0d/parser/expression.go:500 +0x32
github.com/dop251/goja/parser.(*_parser).parseUnaryExpression(0xc000eb0b40, 0xc37e80, 0x30)
    /home/emblemparade/go/pkg/mod/github.com/dop251/goja@v0.0.0-20210427212725-462d53687b0d/parser/expression.go:562 +0x185
github.com/dop251/goja/parser.(*_parser).parseMultiplicativeExpression(0xc000eb0b40, 0xc000916fd8, 0xc0009ca4b0)
    /home/emblemparade/go/pkg/mod/github.com/dop251/goja@v0.0.0-20210427212725-462d53687b0d/parser/expression.go:567 +0x4e
github.com/dop251/goja/parser.(*_parser).parseAdditiveExpression(0xc000eb0b40, 0xc0009ca4b0, 0x203000)
    /home/emblemparade/go/pkg/mod/github.com/dop251/goja@v0.0.0-20210427212725-462d53687b0d/parser/expression.go:585 +0x4e
github.com/dop251/goja/parser.(*_parser).parseShiftExpression(0xc000eb0b40, 0x0, 0xc000cc4fc0)
    /home/emblemparade/go/pkg/mod/github.com/dop251/goja@v0.0.0-20210427212725-462d53687b0d/parser/expression.go:602 +0x4e
github.com/dop251/goja/parser.(*_parser).parseRelationalExpression(0xc000eb0b40, 0x0, 0x0)
    /home/emblemparade/go/pkg/mod/github.com/dop251/goja@v0.0.0-20210427212725-462d53687b0d/parser/expression.go:620 +0x71
github.com/dop251/goja/parser.(*_parser).parseEqualityExpression(0xc000eb0b40, 0x8a2c39, 0xc0009ca960)
    /home/emblemparade/go/pkg/mod/github.com/dop251/goja@v0.0.0-20210427212725-462d53687b0d/parser/expression.go:664 +0x4e
github.com/dop251/goja/parser.(*_parser).parseBitwiseAndExpression(0xc000eb0b40, 0xc000d90bd0, 0xc000d90ba0)
    /home/emblemparade/go/pkg/mod/github.com/dop251/goja@v0.0.0-20210427212725-462d53687b0d/parser/expression.go:683 +0x4e
github.com/dop251/goja/parser.(*_parser).parseBitwiseExclusiveOrExpression(0xc000eb0b40, 0x9, 0x0)
    /home/emblemparade/go/pkg/mod/github.com/dop251/goja@v0.0.0-20210427212725-462d53687b0d/parser/expression.go:700 +0x4e
github.com/dop251/goja/parser.(*_parser).parseBitwiseOrExpression(0xc000eb0b40, 0x203000, 0x203000)
    /home/emblemparade/go/pkg/mod/github.com/dop251/goja@v0.0.0-20210427212725-462d53687b0d/parser/expression.go:717 +0x4e
github.com/dop251/goja/parser.(*_parser).parseLogicalAndExpression(0xc000eb0b40, 0x8, 0xc000cc5408)
    /home/emblemparade/go/pkg/mod/github.com/dop251/goja@v0.0.0-20210427212725-462d53687b0d/parser/expression.go:734 +0x4e
github.com/dop251/goja/parser.(*_parser).parseLogicalOrExpression(0xc000eb0b40, 0x203000, 0x203000)
    /home/emblemparade/go/pkg/mod/github.com/dop251/goja@v0.0.0-20210427212725-462d53687b0d/parser/expression.go:751 +0x4e
github.com/dop251/goja/parser.(*_parser).parseConditionlExpression(0xc000eb0b40, 0x9128d3d391fdc59, 0x7f2d786cdb10)
    /home/emblemparade/go/pkg/mod/github.com/dop251/goja@v0.0.0-20210427212725-462d53687b0d/parser/expression.go:767 +0x2f
github.com/dop251/goja/parser.(*_parser).parseAssignmentExpression(0xc000eb0b40, 0x200, 0x7f2d7cbf7fff)
    /home/emblemparade/go/pkg/mod/github.com/dop251/goja@v0.0.0-20210427212725-462d53687b0d/parser/expression.go:787 +0x4f
github.com/dop251/goja/parser.(*_parser).parseExpression(0xc000eb0b40, 0xc000cc5650, 0x41057b)
    /home/emblemparade/go/pkg/mod/github.com/dop251/goja@v0.0.0-20210427212725-462d53687b0d/parser/expression.go:841 +0x6b
created by testing.(*T).Run
    /Depot/Applications/go/src/testing/testing.go:1238 +0x2b3

goroutine 52 [chan send]:
testing.tRunner.func1.1(0xc0007b7ed5, 0x0, 0x0, 0xc00028ed80, 0xc0007b7e01)
    /Depot/Applications/go/src/testing/testing.go:1123 +0x59
testing.tRunner.func1(0xc00028ed80)
    /Depot/Applications/go/src/testing/testing.go:1184 +0x405
testing.tRunner(0xc00028ed80, 0xc000153b60)
    /Depot/Applications/go/src/testing/testing.go:1197 +0x125
created by testing.(*T).Run
    /Depot/Applications/go/src/testing/testing.go:1238 +0x2b3
FAIL    github.com/tliron/puccini/puccini-tosca 0.043s
FAIL