mirror of
https://github.com/i-net-software/JWebAssembly.git
synced 2025-03-15 02:44:47 +01:00
fix branch result with reference type
This commit is contained in:
parent
1882d016ac
commit
a3aa825ebc
@ -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;
|
||||
|
@ -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 {
|
||||
|
Loading…
x
Reference in New Issue
Block a user