CORDA-1945: properly support double-width interp stack slots in superclasses when synthesising (#3859)

* Fix for CORDA-1945

* Revert irrelevant style change
This commit is contained in:
Dominic Fox
2018-08-29 17:43:17 +01:00
committed by GitHub
parent 60d28b412f
commit 4337537791
2 changed files with 28 additions and 9 deletions

View File

@ -129,6 +129,27 @@ class ClassCarpenterTest {
assertEquals("B{a=xa, b=xb}", i.toString())
}
/**
* Tests the fix for [Corda-1945](https://r3-cev.atlassian.net/secure/RapidBoard.jspa?rapidView=83&modal=detail&selectedIssue=CORDA-1945)
*/
@Test
fun `superclasses with double-size primitive constructor parameters`() {
val schema1 = ClassSchema(
"gen.A",
mapOf("a" to NonNullableField(Long::class.javaPrimitiveType!!)))
val schema2 = ClassSchema(
"gen.B",
mapOf("b" to NonNullableField(String::class.java)),
schema1)
val clazz = cc.build(schema2)
val i = clazz.constructors[0].newInstance(1L, "xb") as SimpleFieldAccess
assertEquals(1L, i["a"])
assertEquals("xb", i["b"])
assertEquals("B{a=1, b=xb}", i.toString())
}
@Test
fun interfaces() {
val schema1 = ClassSchema(