You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@royale.apache.org by jo...@apache.org on 2022/10/27 22:48:50 UTC
[royale-compiler] 03/09: SwitchNode: fix getDefaultNode() failing to get default node from inside an IBlockNode
This is an automated email from the ASF dual-hosted git repository.
joshtynjala pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/royale-compiler.git
commit ced2dde291e5e578ab357ac7d4176ff145238f3c
Author: Josh Tynjala <jo...@apache.org>
AuthorDate: Thu Oct 27 14:20:29 2022 -0700
SwitchNode: fix getDefaultNode() failing to get default node from inside an IBlockNode
---
.../java/org/apache/royale/compiler/utils/ASNodeUtils.java | 1 -
.../apache/royale/compiler/internal/tree/as/SwitchNode.java | 13 +++++++++++--
2 files changed, 11 insertions(+), 3 deletions(-)
diff --git a/compiler-jx/src/main/java/org/apache/royale/compiler/utils/ASNodeUtils.java b/compiler-jx/src/main/java/org/apache/royale/compiler/utils/ASNodeUtils.java
index b2ea9a64c..ea3ec09cf 100644
--- a/compiler-jx/src/main/java/org/apache/royale/compiler/utils/ASNodeUtils.java
+++ b/compiler-jx/src/main/java/org/apache/royale/compiler/utils/ASNodeUtils.java
@@ -51,7 +51,6 @@ public class ASNodeUtils
return retVal.toArray(new IConditionalNode[0]);
}
- // there seems to be a bug in the ISwitchNode.getDefaultNode(), need to file a bug
public static final ITerminalNode getDefaultNode(ISwitchNode node)
{
IBlockNode block = (IBlockNode) node.getChild(1);
diff --git a/compiler/src/main/java/org/apache/royale/compiler/internal/tree/as/SwitchNode.java b/compiler/src/main/java/org/apache/royale/compiler/internal/tree/as/SwitchNode.java
index daf21ea2f..226146c88 100644
--- a/compiler/src/main/java/org/apache/royale/compiler/internal/tree/as/SwitchNode.java
+++ b/compiler/src/main/java/org/apache/royale/compiler/internal/tree/as/SwitchNode.java
@@ -24,6 +24,7 @@ import java.util.ArrayList;
import org.apache.royale.compiler.parsing.IASToken;
import org.apache.royale.compiler.tree.ASTNodeID;
import org.apache.royale.compiler.tree.as.IASNode;
+import org.apache.royale.compiler.tree.as.IBlockNode;
import org.apache.royale.compiler.tree.as.IConditionalNode;
import org.apache.royale.compiler.tree.as.IExpressionNode;
import org.apache.royale.compiler.tree.as.ISwitchNode;
@@ -94,12 +95,20 @@ public class SwitchNode extends ConditionalNode implements ISwitchNode
@Override
public ITerminalNode getDefaultNode()
{
- int childCount = getChildCount();
+ IASNode possibleBlock = getChild(1);
+ if (!(possibleBlock instanceof IBlockNode))
+ {
+ return null;
+ }
+ IBlockNode blockNode = (IBlockNode) possibleBlock;
+ int childCount = blockNode.getChildCount();
for (int i = childCount - 1; i >= 0; i--)
{
- IASNode child = getChild(i);
+ IASNode child = blockNode.getChild(i);
if (child instanceof ITerminalNode)
+ {
return (ITerminalNode)child;
+ }
}
return null;