| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 package com.google.javascript.jscomp; | 5 package com.google.javascript.jscomp; |
| 6 | 6 |
| 7 import com.google.javascript.jscomp.NodeTraversal.AbstractPostOrderCallback; | 7 import com.google.javascript.jscomp.NodeTraversal.AbstractPostOrderCallback; |
| 8 import com.google.javascript.rhino.IR; | 8 import com.google.javascript.rhino.IR; |
| 9 import com.google.javascript.rhino.JSDocInfoBuilder; | 9 import com.google.javascript.rhino.JSDocInfoBuilder; |
| 10 import com.google.javascript.rhino.JSTypeExpression; | 10 import com.google.javascript.rhino.JSTypeExpression; |
| (...skipping 277 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 288 | 288 |
| 289 if (n.getJSDocInfo() != null) { | 289 if (n.getJSDocInfo() != null) { |
| 290 exprResult.getFirstChild().setJSDocInfo(n.getJSDocInfo()); | 290 exprResult.getFirstChild().setJSDocInfo(n.getJSDocInfo()); |
| 291 functionTree.removeProp(Node.JSDOC_INFO_PROP); | 291 functionTree.removeProp(Node.JSDOC_INFO_PROP); |
| 292 } | 292 } |
| 293 this.namespaceBlock.replaceChild(n, exprResult); | 293 this.namespaceBlock.replaceChild(n, exprResult); |
| 294 } else if (n.isName() && this.exports.containsKey(n.getString()) && | 294 } else if (n.isName() && this.exports.containsKey(n.getString()) && |
| 295 !parent.isFunction()) { | 295 !parent.isFunction()) { |
| 296 if (parent.isVar()) { | 296 if (parent.isVar()) { |
| 297 if (parent.getParent() == this.namespaceBlock) { | 297 if (parent.getParent() == this.namespaceBlock) { |
| 298 // It's a top-level exported variable definition. | 298 // It's a top-level exported variable definition (maybe
without an |
| 299 // assignment). |
| 299 // Change | 300 // Change |
| 300 // | 301 // |
| 301 // var enum = { 'one': 1, 'two': 2 }; | 302 // var enum = { 'one': 1, 'two': 2 }; |
| 302 // | 303 // |
| 303 // to | 304 // to |
| 304 // | 305 // |
| 305 // my.namespace.name.enum = { 'one': 1, 'two': 2 }; | 306 // my.namespace.name.enum = { 'one': 1, 'two': 2 }; |
| 306 Node varContent = n.removeFirstChild(); | 307 Node varContent = n.removeFirstChild(); |
| 307 Node exprResult = IR.exprResult( | 308 Node exprResult; |
| 308 IR.assign(buildQualifiedName(n), varContent)
.srcref(parent) | 309 if (varContent == null) { |
| 309 ).srcref(parent); | 310 exprResult = IR.exprResult(buildQualifiedName(n)).sr
cref(parent); |
| 310 | 311 } else { |
| 312 exprResult = IR.exprResult( |
| 313 IR.assign(buildQualifiedName(n), varCont
ent).srcref(parent) |
| 314 ).srcref(parent); |
| 315 } |
| 311 if (parent.getJSDocInfo() != null) { | 316 if (parent.getJSDocInfo() != null) { |
| 312 exprResult.getFirstChild().setJSDocInfo(parent.getJS
DocInfo().clone()); | 317 exprResult.getFirstChild().setJSDocInfo(parent.getJS
DocInfo().clone()); |
| 313 } | 318 } |
| 314 this.namespaceBlock.replaceChild(parent, exprResult); | 319 this.namespaceBlock.replaceChild(parent, exprResult); |
| 315 } | 320 } |
| 316 } else { | 321 } else { |
| 317 // It's a local name referencing exported entity. Change to
its global name. | 322 // It's a local name referencing exported entity. Change to
its global name. |
| 318 Node newNode = buildQualifiedName(n); | 323 Node newNode = buildQualifiedName(n); |
| 319 if (n.getJSDocInfo() != null) { | 324 if (n.getJSDocInfo() != null) { |
| 320 newNode.setJSDocInfo(n.getJSDocInfo().clone()); | 325 newNode.setJSDocInfo(n.getJSDocInfo().clone()); |
| (...skipping 11 matching lines...) Expand all Loading... |
| 332 } | 337 } |
| 333 | 338 |
| 334 private Node buildQualifiedName(Node internalName) { | 339 private Node buildQualifiedName(Node internalName) { |
| 335 String externalName = this.exports.get(internalName.getString()); | 340 String externalName = this.exports.get(internalName.getString()); |
| 336 return NodeUtil.newQualifiedNameNode(compiler.getCodingConvention(), | 341 return NodeUtil.newQualifiedNameNode(compiler.getCodingConvention(), |
| 337 this.namespaceName + "." + externalName).srcrefTree(internal
Name); | 342 this.namespaceName + "." + externalName).srcrefTree(internal
Name); |
| 338 } | 343 } |
| 339 } | 344 } |
| 340 | 345 |
| 341 } | 346 } |
| OLD | NEW |