LEFT | RIGHT |
1 // Copyright (C) 2012 Google Inc. | 1 // Copyright (C) 2012 Google Inc. |
2 // | 2 // |
3 // Licensed under the Apache License, Version 2.0 (the "License"); | 3 // Licensed under the Apache License, Version 2.0 (the "License"); |
4 // you may not use this file except in compliance with the License. | 4 // you may not use this file except in compliance with the License. |
5 // You may obtain a copy of the License at | 5 // You may obtain a copy of the License at |
6 // | 6 // |
7 // http://www.apache.org/licenses/LICENSE-2.0 | 7 // http://www.apache.org/licenses/LICENSE-2.0 |
8 // | 8 // |
9 // Unless required by applicable law or agreed to in writing, software | 9 // Unless required by applicable law or agreed to in writing, software |
10 // distributed under the License is distributed on an "AS IS" BASIS, | 10 // distributed under the License is distributed on an "AS IS" BASIS, |
(...skipping 132 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
143 var resolved = {}; | 143 var resolved = {}; |
144 resolved.rewriteTopLevelVars = resolve('rewriteTopLevelVars', true); | 144 resolved.rewriteTopLevelVars = resolve('rewriteTopLevelVars', true); |
145 resolved.rewriteTypeOf = resolve('rewriteTypeOf', true); | 145 resolved.rewriteTypeOf = resolve('rewriteTypeOf', true); |
146 return resolved; | 146 return resolved; |
147 } | 147 } |
148 | 148 |
149 ses.mitigateGotchas = function(programSrc, options) { | 149 ses.mitigateGotchas = function(programSrc, options) { |
150 try { | 150 try { |
151 options = resolveOptions(options); | 151 options = resolveOptions(options); |
152 var scopeLevel = 0; | 152 var scopeLevel = 0; |
153 var ast = ses.rewriter___.parse(programSrc); | 153 var ast = ses.rewriter_.parse(programSrc); |
154 ses.rewriter___.traverse(ast, { | 154 ses.rewriter_.traverse(ast, { |
155 enter: function enter(node) { | 155 enter: function enter(node) { |
156 if (introducesScope(node)) { | 156 if (introducesScope(node)) { |
157 scopeLevel++; | 157 scopeLevel++; |
158 } else if (options.rewriteTypeOf && isTypeOf(node)) { | 158 } else if (options.rewriteTypeOf && isTypeOf(node)) { |
159 rewriteTypeOf(node); | 159 rewriteTypeOf(node); |
160 } else if (options.rewriteTopLevelVars && | 160 } else if (options.rewriteTopLevelVars && |
161 isVariableDecl(node) && scopeLevel === 0) { | 161 isVariableDecl(node) && scopeLevel === 0) { |
162 rewriteVars(node); | 162 rewriteVars(node); |
163 } | 163 } |
164 }, | 164 }, |
165 leave: function leave(node) { | 165 leave: function leave(node) { |
166 if (introducesScope(node)) { | 166 if (introducesScope(node)) { |
167 scopeLevel--; | 167 scopeLevel--; |
168 } | 168 } |
169 } | 169 } |
170 }); | 170 }); |
171 return ses.rewriter___.generate(ast); | 171 return ses.rewriter_.generate(ast); |
172 } catch (e) { | 172 } catch (e) { |
173 ses.logger.warn("Failed to mitigate SES gotchas. Proceeding anyways.", e)
; | 173 ses.logger.warn("Failed to mitigate SES gotchas. Proceeding anyways.", e); |
174 return programSrc; | 174 return programSrc; |
175 } | 175 } |
176 }; | 176 }; |
177 | 177 |
178 })(); | 178 })(); |
LEFT | RIGHT |