Skip to content

Commit

Permalink
Fix isAlien to properly identify built-in functions. Partially fixes …
Browse files Browse the repository at this point in the history
…#18244
  • Loading branch information
mlabrec committed Nov 15, 2014
1 parent 5a548df commit 9f4dcd8
Show file tree
Hide file tree
Showing 2 changed files with 18 additions and 1 deletion.
2 changes: 1 addition & 1 deletion _base/lang.js
Expand Up @@ -307,7 +307,7 @@ define(["./kernel", "../has", "../sniff"], function(dojo, has){
// summary:
// Returns true if it is a built-in function or some other kind of
// oddball that *should* report as a function but doesn't
return it && !lang.isFunction(it) && /\{\s*\[native code\]\s*\}/.test(String(it)); // Boolean
return !!it && lang.isFunction(it) && /\{\s*\[native code\]\s*\}/.test(String(it)); // Boolean
},

extend: function(ctor, props){
Expand Down
17 changes: 17 additions & 0 deletions tests/_base/lang.js
Expand Up @@ -356,6 +356,23 @@ define(["doh/main", "dojo/_base/array", "dojo/_base/lang", "dojo/_base/kernel"

var s4 = lang.replace("Hello, ${0} ${2}!", ["Robert", "X", "Cringely"], /\$\{([^\}]+)\}/g);
t.is("Hello, Robert Cringely!", s4);
},

function isAlien(t){
t.assertTrue(lang.isAlien(isNaN));
t.assertTrue(lang.isAlien({}.toString));
t.assertFalse(lang.isAlien(function() {}));
t.assertFalse(lang.isAlien(function() {/* [native code] */}));
t.assertFalse(lang.isAlien({}));
t.assertFalse(lang.isAlien(''));
t.assertFalse(lang.isAlien(0));
t.assertFalse(lang.isAlien(NaN));
t.assertFalse(lang.isAlien(null));
t.assertFalse(lang.isAlien(undefined));
if(typeof window != "undefined"){
t.assertTrue(lang.isAlien(window.atob));
t.assertFalse(lang.isAlien(window));
}
}
]
);
Expand Down

0 comments on commit 9f4dcd8

Please sign in to comment.