Espruino/tests/test_class_in_module.js

54 lines
1.5 KiB
JavaScript

/*
Good:
#39[r3,l1] Function {
#40[r1,l2] Name Param "\/a" undefined
#45[r1,l2] Name String [1 blocks] "\/cod" #41[r1,l0] FlatString [4 blocks] "console.log(\"Argument\",a);\n if (a!=\"Foo\") throw \"No argument passed!\";"
#46[r1,l2] Name String [1 blocks] "\/sco" #30[r2,l0] Object {
#28[r1,l2] Name String [1 blocks] "exports" #39[r3,l1] ...
#37[r1,l2] Name String [1 blocks] "module" #30[r2,l0] ...
#38[r1,l2] Name String [1 blocks] "b" #39[r3,l1] ...
}
}
Argument Foo
Bad:
#41[r4,l1] Function {
#42[r1,l2] Name String [1 blocks] "\/sco" #32[r2,l0] Object {
#30[r1,l2] Name String [1 blocks] "exports" #41[r4,l1] ...
#29[r1,l2] Name String [1 blocks] "module" #32[r2,l0] ...
#40[r1,l2] Name String [1 blocks] "b" #41[r4,l1] ...
}
#57[r1,l2] Name Param "\/a" undefined
#58[r1,l2] Name String [1 blocks] "\/cod" #59[r1,l0] String [4 blocks] "console.log(\"Argument\",a);\n if (a!=\"Foo\") throw \"No argument passed!\";"
#43[r1,l2] Name String [2 blocks] "prototype" #45[r1,l0] Object {
#46[r1,l2] Name String [2 blocks] "constructor" #41[r4,l1] ...
}
}
- scope is too soon
*/
Modules.addCached("mod",`
class b {
constructor(a) {
console.log("Argument",a);
if (a!="Foo") throw "No argument passed!";
this.foo=a;
}
}
exports = b;`);
//trace(require('mod'));
m = new (require('mod'))("Foo");
result = m.foo == "Foo";