mirror of
https://github.com/i-net-software/JWebAssembly.git
synced 2025-03-25 15:37:52 +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
|
@Override
|
||||||
protected void writeBlockCode( @Nonnull WasmBlockOperator op, @Nullable Object data ) throws IOException {
|
protected void writeBlockCode( @Nonnull WasmBlockOperator op, @Nullable Object data ) throws IOException {
|
||||||
String name;
|
CharSequence name;
|
||||||
int insetAfter = 0;
|
int insetAfter = 0;
|
||||||
switch( op ) {
|
switch( op ) {
|
||||||
case RETURN:
|
case RETURN:
|
||||||
name = "return";
|
name = "return";
|
||||||
break;
|
break;
|
||||||
case IF:
|
case IF:
|
||||||
|
if( data == ValueType.empty ) {
|
||||||
name = "if";
|
name = "if";
|
||||||
if( data != ValueType.empty ) {
|
} else {
|
||||||
name += " (result " + data + ")";
|
StringBuilder builder = new StringBuilder("if (result ");
|
||||||
|
writeTypeName( builder, (AnyType)data );
|
||||||
|
builder.append( ")" );
|
||||||
|
name = builder;
|
||||||
}
|
}
|
||||||
insetAfter++;
|
insetAfter++;
|
||||||
break;
|
break;
|
||||||
@ -735,9 +739,13 @@ public class TextModuleWriter extends ModuleWriter {
|
|||||||
name = "drop";
|
name = "drop";
|
||||||
break;
|
break;
|
||||||
case BLOCK:
|
case BLOCK:
|
||||||
|
if( data == null ) {
|
||||||
name = "block";
|
name = "block";
|
||||||
if( data != null ) {
|
} else {
|
||||||
name += " (result " + data + ")";
|
StringBuilder builder = new StringBuilder("block (result ");
|
||||||
|
writeTypeName( builder, (AnyType)data );
|
||||||
|
builder.append( ")" );
|
||||||
|
name = builder;
|
||||||
}
|
}
|
||||||
insetAfter++;
|
insetAfter++;
|
||||||
break;
|
break;
|
||||||
|
@ -61,6 +61,7 @@ public class StructsNonGC extends AbstractBaseTest {
|
|||||||
addParam( list, script, "integerClassName" );
|
addParam( list, script, "integerClassName" );
|
||||||
addParam( list, script, "classClassName" );
|
addParam( list, script, "classClassName" );
|
||||||
addParam( list, script, "classConst" );
|
addParam( list, script, "classConst" );
|
||||||
|
addParam( list, script, "branchWithObjectResult" );
|
||||||
}
|
}
|
||||||
rule.setTestParameters( list );
|
rule.setTestParameters( list );
|
||||||
return list;
|
return list;
|
||||||
@ -209,6 +210,14 @@ public class StructsNonGC extends AbstractBaseTest {
|
|||||||
Class clazz = Float.class;
|
Class clazz = Float.class;
|
||||||
return JSObject.domString( clazz.getName() );
|
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 {
|
interface TestDefault {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user