Skip to content

Commit 34424b3

Browse files
committed
fixed some stuff
1 parent bc56135 commit 34424b3

File tree

4 files changed

+32
-3
lines changed

4 files changed

+32
-3
lines changed

lib/ModuleParserHelpers.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,15 +7,15 @@ var ModuleParserHelpers = exports;
77
ModuleParserHelpers.addParsedVariable = function(parser, name, expression) {
88
if(!parser.state.current.addVariable) return false;
99
var deps = [];
10-
parser.parse(expression, {current: {
10+
parser.parse(expression, {
1111
current: {
1212
addDependency: function(dep) {
1313
dep.userRequest = name;
1414
deps.push(dep);
1515
}
1616
},
17-
module: this.state.module
18-
}});
17+
module: parser.state.module
18+
});
1919
parser.state.current.addVariable(name, expression, deps);
2020
return true;
2121
};

lib/Parser.js

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -112,6 +112,16 @@ Parser.prototype.initializeEvaluating = function() {
112112
this.plugin("evaluate UnaryExpression", function(expr) {
113113
if(expr.operator == "typeof" && expr.argument.type == "Identifier") {
114114
return this.applyPluginsBailResult("evaluate typeof " + expr.argument.name, expr);
115+
} else if(expr.operator == "!") {
116+
var argument = this.evaluateExpression(expr.argument);
117+
if(!argument) return;
118+
if(argument.isBoolean()) {
119+
return new BasicEvaluatedExpression().setBoolean(!argument.bool).setRange(expr.range);
120+
} else if(argument.isString()) {
121+
return new BasicEvaluatedExpression().setBoolean(!argument.string).setRange(expr.range);
122+
} else if(argument.isNumber()) {
123+
return new BasicEvaluatedExpression().setBoolean(!argument.number).setRange(expr.range);
124+
}
115125
}
116126
});
117127
this.plugin("evaluate Identifier", function(expr) {

lib/dependencies/CommonJsPlugin.js

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,12 @@ CommonJsPlugin.prototype.apply = function(compiler) {
3838
compiler.parser.plugin("evaluate typeof require", function(expr) {
3939
return new BasicEvaluatedExpression().setString("function").setRange(expr.range);
4040
});
41+
compiler.parser.plugin("evaluate typeof module", function(expr) {
42+
return new BasicEvaluatedExpression().setString("object").setRange(expr.range);
43+
});
44+
compiler.parser.plugin("evaluate typeof exports", function(expr) {
45+
return new BasicEvaluatedExpression().setString("object").setRange(expr.range);
46+
});
4147
compiler.parser.apply(
4248
new CommonJsRequireDependencyParserPlugin(),
4349
new RequireResolveDependencyParserPlugin()

test/browsertest/lib/index.web.js

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -207,6 +207,19 @@ describe("main", function() {
207207
it("should not create a context for typeof require", function() {
208208
require("../folder/typeof").should.be.eql("function");
209209
});
210+
211+
it("should not parse filtered stuff", function() {
212+
if(typeof require != "function") require("fail");
213+
if(typeof require !== "function") require("fail");
214+
if(!(typeof require == "function")) require("fail");
215+
if(!(typeof require === "function")) require("fail");
216+
if(typeof require == "undefined") require = require("fail");
217+
if(typeof require === "undefined") require = require("fail");
218+
if(typeof module == "undefined") module = require("fail");
219+
if(typeof module === "undefined") module = require("fail");
220+
if(typeof module != "object") module = require("fail");
221+
if(typeof exports == "undefined") exports = require("fail");
222+
});
210223
});
211224

212225
describe("polyfilling", function() {

0 commit comments

Comments
 (0)