Skip to content

Commit b9b906c

Browse files
committed
isa evaluates the left argument if it's not a name.
1 parent dba3416 commit b9b906c

4 files changed

Lines changed: 5 additions & 1 deletion

File tree

runtime/scripts/jme-builtins.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1193,6 +1193,7 @@ newBuiltin('isa',['?',TString],TBool, null, {
11931193
if(tok.type=='name' && scope.getVariable(tok.name)==undefined ) {
11941194
return new TBool(kind=='name');
11951195
}
1196+
tok = scope.evaluate(args[0]);
11961197
var match = false;
11971198
if(kind=='complex') {
11981199
match = jme.isType(tok,'number') && tok.value.complex || false;

tests/jme-runtime.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15666,6 +15666,7 @@ newBuiltin('isa',['?',TString],TBool, null, {
1566615666
if(tok.type=='name' && scope.getVariable(tok.name)==undefined ) {
1566715667
return new TBool(kind=='name');
1566815668
}
15669+
tok = scope.evaluate(args[0]);
1566915670
var match = false;
1567015671
if(kind=='complex') {
1567115672
match = jme.isType(tok,'number') && tok.value.complex || false;

tests/jme/jme-tests.mjs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -657,11 +657,12 @@ Numbas.queueScript('jme_tests',['qunit','jme','jme-rules','jme-display','jme-cal
657657
closeEqual(assert, evaluate('1 isa "number"').value,true,'1 isa "number"');
658658
closeEqual(assert, evaluate('1 isa "complex"').value,false,'1 isa "complex"');
659659
closeEqual(assert, evaluate('i isa "complex"').value,true,'i isa "complex"');
660-
closeEqual(assert, evaluate('1+i isa "complex"').value,false,'1+i isa "complex"');
660+
closeEqual(assert, evaluate('1+i isa "complex"').value,true,'1+i isa "complex"');
661661
closeEqual(assert, evaluate('"1" isa "number"').value,false,'"1" isa "number"');
662662
closeEqual(assert, evaluate('"1" isa "string"').value,true,'"1" isa "string"');
663663
closeEqual(assert, evaluate('[] isa "list"').value,true,'[] isa "list"');
664664
closeEqual(assert, evaluate('xy isa "name"').value,true,'xy isa "name"');
665+
closeEqual(assert, evaluate('vector(1,2)[0] isa "number"').value,true,'vector(1,2)[0] isa "name"');
665666
});
666667

667668
QUnit.test('Arithmetic',function(assert) {

tests/numbas-runtime.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15002,6 +15002,7 @@ newBuiltin('isa',['?',TString],TBool, null, {
1500215002
if(tok.type=='name' && scope.getVariable(tok.name)==undefined ) {
1500315003
return new TBool(kind=='name');
1500415004
}
15005+
tok = scope.evaluate(args[0]);
1500515006
var match = false;
1500615007
if(kind=='complex') {
1500715008
match = jme.isType(tok,'number') && tok.value.complex || false;

0 commit comments

Comments
 (0)