You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@flex.apache.org by jo...@apache.org on 2016/11/11 16:41:00 UTC
git commit: [flex-falcon] [refs/heads/develop] - compiler: JSXUtil
uses findProperty to resolve JSX tags to anything in scope instead of only
imports (to allow other types in the same package and even local functions
and things)
Repository: flex-falcon
Updated Branches:
refs/heads/develop 494693b7f -> f9b55ee98
compiler: JSXUtil uses findProperty to resolve JSX tags to anything in scope instead of only imports (to allow other types in the same package and even local functions and things)
Project: http://git-wip-us.apache.org/repos/asf/flex-falcon/repo
Commit: http://git-wip-us.apache.org/repos/asf/flex-falcon/commit/f9b55ee9
Tree: http://git-wip-us.apache.org/repos/asf/flex-falcon/tree/f9b55ee9
Diff: http://git-wip-us.apache.org/repos/asf/flex-falcon/diff/f9b55ee9
Branch: refs/heads/develop
Commit: f9b55ee98c9d89fd68523938a5867e489d9cc122
Parents: 494693b
Author: Josh Tynjala <jo...@gmail.com>
Authored: Fri Nov 11 08:28:36 2016 -0800
Committer: Josh Tynjala <jo...@gmail.com>
Committed: Fri Nov 11 08:28:36 2016 -0800
----------------------------------------------------------------------
.../internal/codegen/js/jx/LiteralEmitter.java | 2 +-
.../internal/units/ASCompilationUnit.java | 2 +-
.../java/org/apache/flex/utils/JSXUtil.java | 42 ++++++++------------
3 files changed, 19 insertions(+), 27 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/f9b55ee9/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/js/jx/LiteralEmitter.java
----------------------------------------------------------------------
diff --git a/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/js/jx/LiteralEmitter.java b/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/js/jx/LiteralEmitter.java
index 58b3f07..2354d95 100644
--- a/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/js/jx/LiteralEmitter.java
+++ b/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/js/jx/LiteralEmitter.java
@@ -433,7 +433,7 @@ public class LiteralEmitter extends JSSubEmitter implements
private String getElementNameToEmit(String elementName, IASNode node)
{
- String qualifiedTypeName = JSXUtil.getQualifiedTypeForElementName(elementName, node);
+ String qualifiedTypeName = JSXUtil.getQualifiedTypeForElementName(elementName, node, getProject());
if (qualifiedTypeName != null)
{
return getEmitter().formatQualifiedName(qualifiedTypeName);
http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/f9b55ee9/compiler/src/main/java/org/apache/flex/compiler/internal/units/ASCompilationUnit.java
----------------------------------------------------------------------
diff --git a/compiler/src/main/java/org/apache/flex/compiler/internal/units/ASCompilationUnit.java b/compiler/src/main/java/org/apache/flex/compiler/internal/units/ASCompilationUnit.java
index 906b241..0d27e68 100644
--- a/compiler/src/main/java/org/apache/flex/compiler/internal/units/ASCompilationUnit.java
+++ b/compiler/src/main/java/org/apache/flex/compiler/internal/units/ASCompilationUnit.java
@@ -511,7 +511,7 @@ public class ASCompilationUnit extends CompilationUnitBase
XMLLiteralNode xmlNode = (XMLLiteralNode) node;
CompilerProject project = getProject();
ArrayList<String> qualifiedNames = new ArrayList<String>();
- JSXUtil.findQualifiedNamesInXMLLiteral(xmlNode, qualifiedNames);
+ JSXUtil.findQualifiedNamesInXMLLiteral(xmlNode, project, qualifiedNames);
for (String qualifiedName : qualifiedNames)
{
ICompilationUnit cu = project.resolveQNameToCompilationUnit(qualifiedName);
http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/f9b55ee9/compiler/src/main/java/org/apache/flex/utils/JSXUtil.java
----------------------------------------------------------------------
diff --git a/compiler/src/main/java/org/apache/flex/utils/JSXUtil.java b/compiler/src/main/java/org/apache/flex/utils/JSXUtil.java
index 66c7393..e2a13aa 100644
--- a/compiler/src/main/java/org/apache/flex/utils/JSXUtil.java
+++ b/compiler/src/main/java/org/apache/flex/utils/JSXUtil.java
@@ -19,15 +19,17 @@
package org.apache.flex.utils;
-import java.util.ArrayList;
import java.util.List;
+import org.apache.flex.compiler.common.DependencyType;
import org.apache.flex.compiler.common.IMetaInfo;
-import org.apache.flex.compiler.common.Multiname;
+import org.apache.flex.compiler.definitions.IDefinition;
+import org.apache.flex.compiler.internal.scopes.ASScope;
import org.apache.flex.compiler.internal.tree.as.XMLLiteralNode;
+import org.apache.flex.compiler.projects.ICompilerProject;
+import org.apache.flex.compiler.scopes.IASScope;
import org.apache.flex.compiler.tree.as.IASNode;
import org.apache.flex.compiler.tree.as.IFunctionNode;
-import org.apache.flex.compiler.tree.as.IImportNode;
import org.apache.flex.compiler.tree.as.ILiteralNode;
import org.apache.flex.compiler.tree.as.IScopedNode;
@@ -48,7 +50,7 @@ public class JSXUtil
return false;
}
- public static void findQualifiedNamesInXMLLiteral(XMLLiteralNode node, List<String> qualifiedNames)
+ public static void findQualifiedNamesInXMLLiteral(XMLLiteralNode node, ICompilerProject project, List<String> qualifiedNames)
{
int childCount = node.getContentsNode().getChildCount();
for (int i = 0; i < childCount; i++)
@@ -59,13 +61,13 @@ public class JSXUtil
ILiteralNode literalChild = (ILiteralNode) child;
if (literalChild.getLiteralType() == ILiteralNode.LiteralType.XML)
{
- findQualifiedNamesInXMLLiteralChild(literalChild, qualifiedNames);
+ findQualifiedNamesInXMLLiteralChild(literalChild, project, qualifiedNames);
}
}
}
}
-
- private static void findQualifiedNamesInXMLLiteralChild(ILiteralNode node, List<String> qualifiedNames)
+
+ private static void findQualifiedNamesInXMLLiteralChild(ILiteralNode node, ICompilerProject project, List<String> qualifiedNames)
{
String value = node.getValue();
while (true)
@@ -105,7 +107,7 @@ public class JSXUtil
//ignore end tags
if (!elementName.startsWith("/"))
{
- String qualifiedElementName = getQualifiedTypeForElementName(elementName, node);
+ String qualifiedElementName = getQualifiedTypeForElementName(elementName, node, project);
if (qualifiedElementName != null)
{
qualifiedNames.add(qualifiedElementName);
@@ -119,7 +121,7 @@ public class JSXUtil
* Finds the qualified type name for an <element> in JSX. Returns null if
* the element name is a basic HTML tag.
*/
- public static String getQualifiedTypeForElementName(String elementName, IASNode node)
+ public static String getQualifiedTypeForElementName(String elementName, IASNode node, ICompilerProject project)
{
String firstChar = elementName.substring(0, 1);
boolean isHTMLTag = firstChar.toLowerCase().equals(firstChar);
@@ -127,25 +129,15 @@ public class JSXUtil
{
return null;
}
- ArrayList<IImportNode> importNodes = new ArrayList<IImportNode>();
IScopedNode scopedNode = node.getContainingScope();
- scopedNode.getAllImportNodes(importNodes);
- for (IImportNode importNode : importNodes)
+ IASScope scope = scopedNode.getScope();
+ if (scope instanceof ASScope)
{
- if (importNode.isWildcardImport())
- {
- continue;
- }
- String importName = importNode.getImportName();
- String importAlias = importNode.getImportAlias();
- if (importAlias != null && importAlias.equals(elementName))
- {
- return importName;
- }
- String baseName = Multiname.getBaseNameForQName(importName);
- if (baseName.equals(elementName))
+ ASScope asScope = (ASScope) scope;
+ IDefinition definition = asScope.findProperty(project, elementName, DependencyType.EXPRESSION);
+ if (definition != null)
{
- return importName;
+ return definition.getQualifiedName();
}
}
return elementName;