| var module = new binaryen.Module(); | |
| // Create an expression and copy it | |
| var original = module.block(null, [ | |
| module.if( | |
| module.local.get(0, binaryen.Type.i32), | |
| module.i32.const(1), | |
| module.i32.const(2) | |
| ) | |
| ], binaryen.Type.i32); | |
| var copy = module.copyExpression(original); | |
| // Check that the expression incl. sub-expressions are copies | |
| assert(original !== copy); | |
| var originalInfo = binaryen.getExpressionInfo(original); | |
| assert(originalInfo.children.length === 1); | |
| var copyInfo = binaryen.getExpressionInfo(copy); | |
| assert(originalInfo.children.length === copyInfo.children.length); | |
| assert(originalInfo.children[0] !== copyInfo.children[0]); | |
| var originalIfInfo = binaryen.getExpressionInfo(originalInfo.children[0]); | |
| var copyIfInfo = binaryen.getExpressionInfo(copyInfo.children[0]); | |
| assert(originalIfInfo.condition !== copyIfInfo.condition); | |
| assert(originalIfInfo.ifTrue !== copyIfInfo.ifTrue); | |
| assert(originalIfInfo.ifFalse !== copyIfInfo.ifFalse); | |
| // Check that both are otherwise identical | |
| assert(binaryen.emitText(original) === binaryen.emitText(copy)); |