Repository: flex-falcon Updated Branches: refs/heads/dual 72dd8a2a2 -> 5c8ca85a0
allow alternate params since sometimes we can't share a common base class when wrapping classes Project: http://git-wip-us.apache.org/repos/asf/flex-falcon/repo Commit: http://git-wip-us.apache.org/repos/asf/flex-falcon/commit/af7cd26c Tree: http://git-wip-us.apache.org/repos/asf/flex-falcon/tree/af7cd26c Diff: http://git-wip-us.apache.org/repos/asf/flex-falcon/diff/af7cd26c Branch: refs/heads/dual Commit: af7cd26c61c7d08c6a098e164013dbe8c1d9b0b9 Parents: 72dd8a2 Author: Alex Harui <[email protected]> Authored: Fri Feb 10 11:19:09 2017 -0800 Committer: Alex Harui <[email protected]> Committed: Fri Feb 10 11:19:09 2017 -0800 ---------------------------------------------------------------------- .../constants/IMetaAttributeConstants.java | 1 + .../compiler/internal/projects/FlexProject.java | 30 ++++++++++++++++++++ 2 files changed, 31 insertions(+) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/af7cd26c/compiler/src/main/java/org/apache/flex/compiler/constants/IMetaAttributeConstants.java ---------------------------------------------------------------------- diff --git a/compiler/src/main/java/org/apache/flex/compiler/constants/IMetaAttributeConstants.java b/compiler/src/main/java/org/apache/flex/compiler/constants/IMetaAttributeConstants.java index b30948c..6db2842 100644 --- a/compiler/src/main/java/org/apache/flex/compiler/constants/IMetaAttributeConstants.java +++ b/compiler/src/main/java/org/apache/flex/compiler/constants/IMetaAttributeConstants.java @@ -200,6 +200,7 @@ public interface IMetaAttributeConstants static final String ATTRIBUTE_SWFOVERRIDE = "SWFOverride"; static final String NAME_SWFOVERRIDE_RETURNS = "returns"; static final String NAME_SWFOVERRIDE_PARAMS = "params"; + static final String NAME_SWFOVERRIDE_ALTPARAMS = "altparams"; // [VisualContentHolder] static final String ATTRIBUTE_VISUALCONTENTHOLDER = "VisualContentHolder"; http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/af7cd26c/compiler/src/main/java/org/apache/flex/compiler/internal/projects/FlexProject.java ---------------------------------------------------------------------- diff --git a/compiler/src/main/java/org/apache/flex/compiler/internal/projects/FlexProject.java b/compiler/src/main/java/org/apache/flex/compiler/internal/projects/FlexProject.java index 9721d2a..5944ec0 100644 --- a/compiler/src/main/java/org/apache/flex/compiler/internal/projects/FlexProject.java +++ b/compiler/src/main/java/org/apache/flex/compiler/internal/projects/FlexProject.java @@ -2284,6 +2284,36 @@ public class FlexProject extends ASProject implements IFlexProject } } } + IMetaTag[] metas = func.getAllMetaTags(); + for (IMetaTag meta : metas) + { + if (meta.getTagName().equals(IMetaAttributeConstants.ATTRIBUTE_SWFOVERRIDE)) + { + IMetaTagAttribute attr = meta.getAttribute(IMetaAttributeConstants.NAME_SWFOVERRIDE_ALTPARAMS); + if (attr != null) + { + // format is expectedQName:allowedQName,expectedQName:allowedQName. + // we don't know which parameter it is so we're assuming for now that any mapping + // applies to all occurences of that type in the parameter list + String paramList = attr.getValue(); + String[] paramMap; + if (paramList.contains(",")) + paramMap = paramList.split(","); + else + { + paramMap = new String[1]; + paramMap[0] = paramList; + } + for (String item : paramMap) + { + String[] parts = item.split(":"); + if (expectedDefinition.getQualifiedName().equals(parts[0])) + if (((ITypeDefinition)actualDefinition).isInstanceOf(parts[1], this)) + return true; + } + } + } + } return false; }
