From 8d952c245f8031fee745ad5854374def695caad6 Mon Sep 17 00:00:00 2001 From: Gerald Lewis Date: Thu, 12 Jan 2012 18:34:34 -0500 Subject: [PATCH] #1534 class then "use strict" --- src/nodes.coffee | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/nodes.coffee b/src/nodes.coffee index 8b275940..c6e5dd2d 100644 --- a/src/nodes.coffee +++ b/src/nodes.coffee @@ -915,6 +915,12 @@ exports.Class = class Class extends Base if node instanceof Value and node.isObject(true) exps[i] = @addProperties node, name, o child.expressions = exps = flatten exps + + checkStrict: -> + if (node = @body.expressions[0]) instanceof Value + if /^['"]use strict['"]$/.test node.unwrapAll().value + @strict = yes + @body.expressions.shift() # Make sure that a constructor is defined for the class, and properly # configured. @@ -938,6 +944,7 @@ exports.Class = class Class extends Base name = "_#{name}" if name.reserved lname = new Literal name + @checkStrict() @setContext name @walkBody name, o @ensureConstructor name @@ -946,6 +953,7 @@ exports.Class = class Class extends Base if decl @body.expressions.unshift new Assign (new Value (new Literal name), [new Access new Literal 'name']), (new Literal "'#{name}'") @body.expressions.push lname + @body.expressions.unshift(new Value(new Literal "'use strict'")) if @strict @addBoundFunctions o call = Closure.wrap @body