@webassemblyjs/validation
Advanced tools
Comparing version 1.8.0 to 1.8.1
function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } } | ||
import { traverse, isInstruction } from "@webassemblyjs/ast"; | ||
import { traverse, isInstruction, isSignature, isNumberLiteral } from "@webassemblyjs/ast"; | ||
import { moduleContextFromModuleAST } from "@webassemblyjs/helper-module-context"; | ||
@@ -55,2 +55,10 @@ import getType from "./type-checker/get-type.js"; | ||
function checkStacks(expectedStack, actualStack) { | ||
if (!(expectedStack !== undefined)) { | ||
throw new Error('expectedStack !== undefined' + " error: " + (undefined || "unknown")); | ||
} | ||
if (!(actualStack !== undefined)) { | ||
throw new Error('actualStack !== undefined' + " error: " + (undefined || "unknown")); | ||
} | ||
if (actualStack !== false) { | ||
@@ -240,7 +248,27 @@ var j = actualStack.length - 1; | ||
typeChecker.setStopFuncCheck(false); | ||
typeChecker.setCurrentFuncName(node.name.value); | ||
var expectedResult = node.signature.results; | ||
typeChecker.setCurrentFuncName(node.name.value); // resolve signature | ||
var signature; | ||
{ | ||
// signature might be a reference to a type | ||
if (isSignature(node.signature)) { | ||
signature = node.signature; | ||
} else { | ||
if (!isNumberLiteral(node.signature)) { | ||
throw new Error('isNumberLiteral(node.signature)' + " error: " + (undefined || "unknown")); | ||
} | ||
var typeId = node.signature.value; | ||
if (!moduleContext.hasType(typeId)) { | ||
throw new Error('moduleContext.hasType(typeId)' + " error: " + (undefined || "unknown")); | ||
} | ||
signature = moduleContext.getType(typeId); | ||
} | ||
} | ||
var expectedResult = signature.results; | ||
moduleContext.newContext(node.name.value, expectedResult); // Parameters are local variables | ||
node.signature.params.forEach(function (p) { | ||
signature.params.forEach(function (p) { | ||
return moduleContext.addLocal(p.valtype); | ||
@@ -252,3 +280,3 @@ }); | ||
return typeChecker.getErrors(); | ||
} // Compare the two | ||
} // Compare the two stacks | ||
@@ -255,0 +283,0 @@ |
@@ -508,5 +508,4 @@ function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } } | ||
{ | ||
// TODO: These should be polymorphic | ||
args = []; | ||
result = []; | ||
result = [POLYMORPHIC]; | ||
break; | ||
@@ -608,9 +607,19 @@ } | ||
{ | ||
// TODO: There are more things to be checked here | ||
args = _toConsumableArray(instruction.signature.params.map(function (p) { | ||
// resolve signature | ||
var signature; | ||
{ | ||
// signature might be a reference to a type | ||
if (instruction.signature.type === "Signature") { | ||
signature = instruction.signature; | ||
} else { | ||
var typeId = instruction.signature.value; // TODO(sven): check if signature exists | ||
signature = moduleContext.getType(typeId); | ||
} | ||
} // TODO: There are more things to be checked here | ||
args = ["i32"].concat(_toConsumableArray(signature.params.reverse().map(function (p) { | ||
return p.valtype; | ||
})).concat(["i32"]); | ||
result = instruction.signature.results.map(function (p) { | ||
return p.valtype; | ||
}); | ||
}))); | ||
result = signature.results; | ||
break; | ||
@@ -617,0 +626,0 @@ } |
@@ -67,2 +67,10 @@ "use strict"; | ||
function checkStacks(expectedStack, actualStack) { | ||
if (!(expectedStack !== undefined)) { | ||
throw new Error('expectedStack !== undefined' + " error: " + (undefined || "unknown")); | ||
} | ||
if (!(actualStack !== undefined)) { | ||
throw new Error('actualStack !== undefined' + " error: " + (undefined || "unknown")); | ||
} | ||
if (actualStack !== false) { | ||
@@ -252,7 +260,27 @@ var j = actualStack.length - 1; | ||
typeChecker.setStopFuncCheck(false); | ||
typeChecker.setCurrentFuncName(node.name.value); | ||
var expectedResult = node.signature.results; | ||
typeChecker.setCurrentFuncName(node.name.value); // resolve signature | ||
var signature; | ||
{ | ||
// signature might be a reference to a type | ||
if ((0, _ast.isSignature)(node.signature)) { | ||
signature = node.signature; | ||
} else { | ||
if (!(0, _ast.isNumberLiteral)(node.signature)) { | ||
throw new Error('isNumberLiteral(node.signature)' + " error: " + (undefined || "unknown")); | ||
} | ||
var typeId = node.signature.value; | ||
if (!moduleContext.hasType(typeId)) { | ||
throw new Error('moduleContext.hasType(typeId)' + " error: " + (undefined || "unknown")); | ||
} | ||
signature = moduleContext.getType(typeId); | ||
} | ||
} | ||
var expectedResult = signature.results; | ||
moduleContext.newContext(node.name.value, expectedResult); // Parameters are local variables | ||
node.signature.params.forEach(function (p) { | ||
signature.params.forEach(function (p) { | ||
return moduleContext.addLocal(p.valtype); | ||
@@ -264,3 +292,3 @@ }); | ||
return typeChecker.getErrors(); | ||
} // Compare the two | ||
} // Compare the two stacks | ||
@@ -267,0 +295,0 @@ |
@@ -515,5 +515,4 @@ "use strict"; | ||
{ | ||
// TODO: These should be polymorphic | ||
args = []; | ||
result = []; | ||
result = [_types.POLYMORPHIC]; | ||
break; | ||
@@ -615,9 +614,19 @@ } | ||
{ | ||
// TODO: There are more things to be checked here | ||
args = _toConsumableArray(instruction.signature.params.map(function (p) { | ||
// resolve signature | ||
var signature; | ||
{ | ||
// signature might be a reference to a type | ||
if (instruction.signature.type === "Signature") { | ||
signature = instruction.signature; | ||
} else { | ||
var typeId = instruction.signature.value; // TODO(sven): check if signature exists | ||
signature = moduleContext.getType(typeId); | ||
} | ||
} // TODO: There are more things to be checked here | ||
args = ["i32"].concat(_toConsumableArray(signature.params.reverse().map(function (p) { | ||
return p.valtype; | ||
})).concat(["i32"]); | ||
result = instruction.signature.results.map(function (p) { | ||
return p.valtype; | ||
}); | ||
}))); | ||
result = signature.results; | ||
break; | ||
@@ -624,0 +633,0 @@ } |
{ | ||
"name": "@webassemblyjs/validation", | ||
"version": "1.8.0", | ||
"version": "1.8.1", | ||
"description": "Module AST validations", | ||
@@ -20,12 +20,12 @@ "main": "lib/index.js", | ||
"dependencies": { | ||
"@webassemblyjs/ast": "1.8.0", | ||
"@webassemblyjs/helper-module-context": "1.8.0" | ||
"@webassemblyjs/ast": "1.8.1", | ||
"@webassemblyjs/helper-module-context": "1.8.1" | ||
}, | ||
"devDependencies": { | ||
"@webassemblyjs/helper-test-framework": "1.8.0", | ||
"@webassemblyjs/wasm-parser": "1.8.0", | ||
"@webassemblyjs/wast-parser": "1.8.0", | ||
"@webassemblyjs/helper-test-framework": "1.8.1", | ||
"@webassemblyjs/wasm-parser": "1.8.1", | ||
"@webassemblyjs/wast-parser": "1.8.1", | ||
"wabt": "1.0.0-nightly.20180421" | ||
}, | ||
"gitHead": "8b2d1afa793ea81f20ec63416134c201e39694eb" | ||
"gitHead": "a2f42245e9b597e3541e0f697253449d60fc4d79" | ||
} |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
76329
2055
+ Added@webassemblyjs/ast@1.8.1(transitive)
+ Added@webassemblyjs/floating-point-hex-parser@1.8.1(transitive)
+ Added@webassemblyjs/helper-api-error@1.8.1(transitive)
+ Added@webassemblyjs/helper-code-frame@1.8.1(transitive)
+ Added@webassemblyjs/helper-fsm@1.8.1(transitive)
+ Added@webassemblyjs/helper-module-context@1.8.1(transitive)
+ Added@webassemblyjs/helper-wasm-bytecode@1.8.1(transitive)
+ Added@webassemblyjs/wast-parser@1.8.1(transitive)
+ Added@webassemblyjs/wast-printer@1.8.1(transitive)
- Removed@webassemblyjs/ast@1.8.0(transitive)
- Removed@webassemblyjs/floating-point-hex-parser@1.8.0(transitive)
- Removed@webassemblyjs/helper-api-error@1.8.0(transitive)
- Removed@webassemblyjs/helper-code-frame@1.8.0(transitive)
- Removed@webassemblyjs/helper-fsm@1.8.0(transitive)
- Removed@webassemblyjs/helper-module-context@1.8.0(transitive)
- Removed@webassemblyjs/helper-wasm-bytecode@1.8.0(transitive)
- Removed@webassemblyjs/wast-parser@1.8.0(transitive)
- Removed@webassemblyjs/wast-printer@1.8.0(transitive)
Updated@webassemblyjs/ast@1.8.1