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 72a4a282612ccf119a1f5ef5fb5a1f30574781b8
Author: Josh Tynjala <[email protected]>
AuthorDate: Wed Feb 4 09:08:35 2026 -0800

    AccessorDefinition: fix function type expression metadata to work similarly 
to variables
    
    FunctionDefinition: don't add function type expression metadata to 
accessors because the AccessorDefinition will handle it
---
 .../internal/definitions/AccessorDefinition.java    | 21 +++++++++++++++++++++
 .../internal/definitions/FunctionDefinition.java    |  4 +++-
 2 files changed, 24 insertions(+), 1 deletion(-)

diff --git 
a/compiler/src/main/java/org/apache/royale/compiler/internal/definitions/AccessorDefinition.java
 
b/compiler/src/main/java/org/apache/royale/compiler/internal/definitions/AccessorDefinition.java
index 286bfac3d..dcba594f2 100644
--- 
a/compiler/src/main/java/org/apache/royale/compiler/internal/definitions/AccessorDefinition.java
+++ 
b/compiler/src/main/java/org/apache/royale/compiler/internal/definitions/AccessorDefinition.java
@@ -38,6 +38,8 @@ import 
org.apache.royale.compiler.problems.DuplicateFunctionDefinitionProblem;
 import org.apache.royale.compiler.problems.UnresolvedNamespaceProblem;
 import org.apache.royale.compiler.projects.ICompilerProject;
 import org.apache.royale.compiler.scopes.IDefinitionSet;
+import org.apache.royale.compiler.tree.as.IExpressionNode;
+import org.apache.royale.compiler.tree.as.IFunctionTypeExpressionNode;
 import org.apache.royale.compiler.tree.as.IVariableNode;
 
 /**
@@ -51,6 +53,25 @@ public abstract class AccessorDefinition extends 
FunctionDefinition implements I
         super(name);
     }
 
+    @Override
+    public TypeDefinitionBase resolveType(ICompilerProject project)
+    {
+        if (project.getAllowStrictFunctionTypes())
+        {
+            IVariableNode accessorNode = getVariableNode();
+            if (accessorNode != null)
+            {
+                IExpressionNode varTypeNode = 
accessorNode.getVariableTypeNode();
+                if (varTypeNode instanceof IFunctionTypeExpressionNode)
+                {
+                    IFunctionTypeExpressionNode funcTypeExprNode = 
(IFunctionTypeExpressionNode) varTypeNode;
+                    addFunctionTypeMeta(funcTypeExprNode, null, project);
+                }
+            }
+        }
+        return super.resolveType(project);
+    }
+
     @Override
     public AccessorDefinition resolveCorrespondingAccessor(ICompilerProject 
project)
     {
diff --git 
a/compiler/src/main/java/org/apache/royale/compiler/internal/definitions/FunctionDefinition.java
 
b/compiler/src/main/java/org/apache/royale/compiler/internal/definitions/FunctionDefinition.java
index 44b24f552..020f10b74 100644
--- 
a/compiler/src/main/java/org/apache/royale/compiler/internal/definitions/FunctionDefinition.java
+++ 
b/compiler/src/main/java/org/apache/royale/compiler/internal/definitions/FunctionDefinition.java
@@ -44,6 +44,7 @@ import org.apache.royale.compiler.projects.ICompilerProject;
 import org.apache.royale.compiler.scopes.IASScope;
 import org.apache.royale.compiler.scopes.IDefinitionSet;
 import org.apache.royale.compiler.tree.as.IASNode;
+import org.apache.royale.compiler.tree.as.IAccessorNode;
 import org.apache.royale.compiler.tree.as.IContainerNode;
 import org.apache.royale.compiler.tree.as.IDefinitionNode;
 import org.apache.royale.compiler.tree.as.IExpressionNode;
@@ -224,7 +225,8 @@ public class FunctionDefinition extends 
ScopedDefinitionBase implements IFunctio
         if (project.getAllowStrictFunctionTypes())
         {
             IFunctionNode funcNode = (IFunctionNode) getNode();
-            if (funcNode != null)
+            // accessors add the metadata in resolveType instead, similar to 
variables
+            if (funcNode != null && !(funcNode instanceof IAccessorNode))
             {
                 IExpressionNode returnTypeNode = funcNode.getReturnTypeNode();
                 if (returnTypeNode instanceof IFunctionTypeExpressionNode)

Reply via email to