summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/binaryen-c.cpp6
-rw-r--r--src/binaryen-c.h1
-rw-r--r--test/example/c-api-kitchen-sink.c4
-rw-r--r--test/example/c-api-kitchen-sink.txt1
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)