fix branch result with reference type

This commit is contained in:
Volker Berlin 2020-03-21 11:59:05 +01:00
parent 1882d016ac
commit a3aa825ebc
2 changed files with 24 additions and 7 deletions

View File

@ -709,16 +709,20 @@ public class TextModuleWriter extends ModuleWriter {
*/
@Override
protected void writeBlockCode( @Nonnull WasmBlockOperator op, @Nullable Object data ) throws IOException {
String name;
CharSequence name;
int insetAfter = 0;
switch( op ) {
case RETURN:
name = "return";
break;
case IF:
name = "if";
if( data != ValueType.empty ) {
name += " (result " + data + ")";
if( data == ValueType.empty ) {
name = "if";
} else {
StringBuilder builder = new StringBuilder("if (result ");
writeTypeName( builder, (AnyType)data );
builder.append( ")" );
name = builder;
}
insetAfter++;
break;
@ -735,9 +739,13 @@ public class TextModuleWriter extends ModuleWriter {
name = "drop";
break;
case BLOCK:
name = "block";
if( data != null ) {
name += " (result " + data + ")";
if( data == null ) {
name = "block";
} else {
StringBuilder builder = new StringBuilder("block (result ");
writeTypeName( builder, (AnyType)data );
builder.append( ")" );
name = builder;
}
insetAfter++;
break;

View File

@ -61,6 +61,7 @@ public class StructsNonGC extends AbstractBaseTest {
addParam( list, script, "integerClassName" );
addParam( list, script, "classClassName" );
addParam( list, script, "classConst" );
addParam( list, script, "branchWithObjectResult" );
}
rule.setTestParameters( list );
return list;
@ -209,6 +210,14 @@ public class StructsNonGC extends AbstractBaseTest {
Class clazz = Float.class;
return JSObject.domString( clazz.getName() );
}
@Export
static int branchWithObjectResult() {
Integer val1 = 42;
Integer val2 = 7;
Integer val = val1 == val2 ? val1 : val2;
return val;
}
}
interface TestDefault {