diff options
-rw-r--r-- | src/binaryen-c.cpp | 6 | ||||
-rw-r--r-- | src/binaryen-c.h | 1 | ||||
-rw-r--r-- | test/example/c-api-kitchen-sink.c | 4 | ||||
-rw-r--r-- | test/example/c-api-kitchen-sink.txt | 1 |
4 files changed, 8 insertions, 4 deletions
diff --git a/src/binaryen-c.cpp b/src/binaryen-c.cpp index 135ca1504..62e35f025 100644 --- a/src/binaryen-c.cpp +++ b/src/binaryen-c.cpp @@ -80,7 +80,7 @@ void BinaryenModuleDispose(BinaryenModuleRef module) { delete (Module*)module; } BinaryenFunctionTypeRef BinaryenAddFunctionType(BinaryenModuleRef module, const char* name, BinaryenType result, BinaryenType* paramTypes, BinaryenIndex numParams) { auto* wasm = (Module*)module; auto* ret = new FunctionType; - ret->name = name; + if (name) ret->name = name; ret->result = WasmType(result); for (BinaryenIndex i = 0; i < numParams; i++) { ret->params.push_back(WasmType(paramTypes[i])); @@ -174,9 +174,7 @@ BinaryenOp BinaryenHasFeature(void) { return HasFeature; } BinaryenExpressionRef BinaryenBlock(BinaryenModuleRef module, const char* name, BinaryenExpressionRef* children, BinaryenIndex numChildren) { auto* ret = ((Module*)module)->allocator.alloc<Block>(); - if (name) { - ret->name = name; - } + if (name) ret->name = name; for (BinaryenIndex i = 0; i < numChildren; i++) { ret->list.push_back((Expression*)children[i]); } diff --git a/src/binaryen-c.h b/src/binaryen-c.h index 2fe394bd2..ae3e0c019 100644 --- a/src/binaryen-c.h +++ b/src/binaryen-c.h @@ -80,6 +80,7 @@ void BinaryenModuleDispose(BinaryenModuleRef module); typedef void* BinaryenFunctionTypeRef; +// Note: name can be NULL, in which case we auto-generate a name BinaryenFunctionTypeRef BinaryenAddFunctionType(BinaryenModuleRef module, const char* name, BinaryenType result, BinaryenType* paramTypes, BinaryenIndex numParams); // Literals. These are passed by value. diff --git a/test/example/c-api-kitchen-sink.c b/test/example/c-api-kitchen-sink.c index 8de127340..5276314b1 100644 --- a/test/example/c-api-kitchen-sink.c +++ b/test/example/c-api-kitchen-sink.c @@ -225,6 +225,10 @@ void test_core() { BinaryenFunctionRef starter = BinaryenAddFunction(module, "starter", v, NULL, 0, BinaryenNop(module)); BinaryenSetStart(module, starter); + // Unnamed function type + + BinaryenFunctionTypeRef noname = BinaryenAddFunctionType(module, NULL, BinaryenNone(), NULL, 0); + // Verify it validates assert(BinaryenModuleValidate(module)); diff --git a/test/example/c-api-kitchen-sink.txt b/test/example/c-api-kitchen-sink.txt index e878984a3..e36e9ba14 100644 --- a/test/example/c-api-kitchen-sink.txt +++ b/test/example/c-api-kitchen-sink.txt @@ -12,6 +12,7 @@ BinaryenFloat64: 4 (type $iiIfF (func (param i32 i64 f32 f64) (result i32))) (type $fiF (func (param i32 f64) (result f32))) (type $v (func)) + (type $3 (func)) (import $an-imported "module" "base" (param i32 f64) (result f32)) (export "kitchen_sinker" $kitchen-sinker) (table $kitchen-sinker) |