I'll check it out. Looking at where the exception is thrown, I have a pretty good idea of what is null and how to go about fixing it.
-- Josh Tynjala Bowler Hat LLC https://bowlerhat.dev/ On Mon, Jan 26, 2026 at 9:43 AM Harbs <[email protected]> wrote: > I wanted to try out the new typed functions and I’m getting lots of > errors. Here’s what I tried: > > 1. I converted a bunch of function. declarations in Core: > diff --git > a/frameworks/projects/Core/src/main/royale/org/apache/royale/utils/object/defineGetter.as > b/frameworks/projects/Core/src/main/royale/org/apache/royale/utils/object/defineGetter.as > index 6fb9ce411a..50adfadbbe 100644 > --- > a/frameworks/projects/Core/src/main/royale/org/apache/royale/utils/object/defineGetter.as > +++ > b/frameworks/projects/Core/src/main/royale/org/apache/royale/utils/object/defineGetter.as > @@ -28,7 +28,7 @@ package org.apache.royale.utils.object > * @royalesuppressexport > */ > COMPILE::JS > - public function > defineGetter(obj:Object,prop:String,getterFunction:Function):void > + public function defineGetter(obj:Object,prop:String,getterFunction:() > => *):void > { > Object.defineProperty(obj, prop, {"get": getterFunction}); > } > > > diff --git > a/frameworks/projects/Core/src/main/royale/org/apache/royale/utils/async/IAsyncTask.as > b/frameworks/projects/Core/src/main/royale/org/apache/royale/utils/async/IAsyncTask.as > index 9f3565ff14..c6b7402a6d 100644 > --- > a/frameworks/projects/Core/src/main/royale/org/apache/royale/utils/async/IAsyncTask.as > +++ > b/frameworks/projects/Core/src/main/royale/org/apache/royale/utils/async/IAsyncTask.as > @@ -20,8 +20,8 @@ package org.apache.royale.utils.async > { > public interface IAsyncTask > { > - function done(callback:Function):IAsyncTask; > - function exec(callback:Function):IAsyncTask; > + function done(callback:(task:IAsyncTask) => > void):IAsyncTask; > + function exec(callback:(task:IAsyncTask) => > void):IAsyncTask; > function run(data:Object=null):void; > > function complete():void; > > > diff --git > a/frameworks/projects/Core/src/main/royale/org/apache/royale/utils/async/AsyncTask.as > b/frameworks/projects/Core/src/main/royale/org/apache/royale/utils/async/AsyncTask.as > index 541b3827be..47a71323de 100644 > --- > a/frameworks/projects/Core/src/main/royale/org/apache/royale/utils/async/AsyncTask.as > +++ > b/frameworks/projects/Core/src/main/royale/org/apache/royale/utils/async/AsyncTask.as > @@ -136,7 +136,7 @@ package org.apache.royale.utils.async > * @playerversion AIR 2.6 > * @productversion Royale 0.9.6 > */ > - public function done(callback:Function):IAsyncTask{ > + public function done(callback:(task:IAsyncTask) => void):IAsyncTask{ > if(_status == "complete" || _status == "failed"){ > callback(this); > return this; > @@ -158,7 +158,7 @@ package org.apache.royale.utils.async > * @playerversion AIR 2.6 > * @productversion Royale 0.9.13 > */ > - public function exec(callback:Function):IAsyncTask > + public function exec(callback:(task:IAsyncTask) => void):IAsyncTask > { > done(callback); > run(); > @@ -200,7 +200,7 @@ package org.apache.royale.utils.async > * Keep references to event listeners for automatic cleanup > */ > COMPILE::JS > - override public function addEventListener(type:String, > handler:Function, useCapture:Boolean = false, scope:Object = null):void > + override public function addEventListener(type:String, > handler:(ev:Event) => void, useCapture:Boolean = false, scope:Object = > null):void > { > super.addEventListener(type,handler,useCapture,scope); > if(!listeners) > @@ -214,7 +214,7 @@ package org.apache.royale.utils.async > }); > } > COMPILE::SWF > - override public function addEventListener(type:String, > listener:Function, useCapture:Boolean = false, priority:int = 0, > useWeakReference:Boolean = false):void > + override public function addEventListener(type:String, > listener:(ev:Event) => void, useCapture:Boolean = false, priority:int = 0, > useWeakReference:Boolean = false):void > { > if(!listeners) > { > 2. I compiled Core > 3. I opened my project > 4. I got a bunch of: > Unexpected exception 'java.lang.NullPointerException' with message > '${exceptionMessage}' at org.apache.royale.compiler.internal.tree.as > .FunctionTypeExpressionNode.parseSignature:195 > org.apache.royale.compiler.internal.tree.as > .FunctionTypeExpressionNode.createTypeNodeFromParameterDefinition:246 > org.apache.royale.compiler.internal.tree.as > .FunctionTypeExpressionNode.createFromFunctionDefinition:157 > > org.apache.royale.compiler.internal.semantics.MethodBodySemanticChecker.checkFormalsVsActuals:1180 > > org.apache.royale.compiler.internal.semantics.MethodBodySemanticChecker.checkFunctionCall:1474 > > org.apache.royale.compiler.internal.as.codegen.ABCGeneratingReducer.reduce_functionAsMemberExpr:3890 > > org.apache.royale.compiler.internal.as.codegen.CmcEmitter.action_349:5971 > > org.apache.royale.compiler.internal.as.codegen.CmcEmitter.dispatchAction:9331 > > org.apache.royale.compiler.internal.as.codegen.CmcEmitter.reduceAntecedent:40375 > > org.apache.royale.compiler.internal.as.codegen.CmcEmitter.dispatchAction:7568 > > org.apache.royale.compiler.internal.as.codegen.CmcEmitter.reduceAntecedent:40375 > > org.apache.royale.compiler.internal.as.codegen.CmcEmitter.dispatchAction:10191 > > org.apache.royale.compiler.internal.as.codegen.CmcEmitter.reduceAntecedent:40375 > > org.apache.royale.compiler.internal.as.codegen.CmcEmitter.reduce:40352 > > org.apache.royale.compiler.internal.as.codegen.CmcEmitter.reduceSubgoals:40403 > > org.apache.royale.compiler.internal.as.codegen.CmcEmitter.reduceAntecedent:40374 > > org.apache.royale.compiler.internal.as.codegen.CmcEmitter.reduce:40352 > > org.apache.royale.compiler.internal.as.codegen.CmcEmitter.reduceSubgoals:40394 > > org.apache.royale.compiler.internal.as.codegen.CmcEmitter.reduceAntecedent:40374 > > org.apache.royale.compiler.internal.as.codegen.CmcEmitter.reduce:40352 > > org.apache.royale.compiler.internal.as.codegen.CmcEmitter.burm:40654 > > org.apache.royale.compiler.internal.as.codegen.ABCGenerator.generateInstructions:235 > > org.apache.royale.compiler.internal.as.codegen.ABCGenerator.generateMethodBodyForFunction:416 > > org.apache.royale.compiler.internal.as.codegen.ABCGenerator.generateMethodBodyForFunction:370 > > org.apache.royale.compiler.internal.as.codegen.ABCGenerator.generateFunction:272 > > org.apache.royale.compiler.internal.as.codegen.ClassDirectiveProcessor.declareFunction:891 > > org.apache.royale.compiler.internal.as.codegen.DirectiveProcessor.processNode:218 > > org.apache.royale.compiler.internal.as.codegen.DirectiveProcessor.traverse:192 > > org.apache.royale.compiler.internal.as.codegen.GlobalDirectiveProcessor.declareClass:462 > > org.apache.royale.compiler.internal.as.codegen.DirectiveProcessor.processNode:210 > > org.apache.royale.compiler.internal.as.codegen.DirectiveProcessor.traverse:192 > > org.apache.royale.compiler.internal.as.codegen.GlobalDirectiveProcessor.declarePackage:488 > > org.apache.royale.compiler.internal.as.codegen.DirectiveProcessor.processNode:227 > > org.apache.royale.compiler.internal.as.codegen.DirectiveProcessor.traverse:192 > > org.apache.royale.compiler.internal.as.codegen.ABCGenerator.generate:126 > > org.apache.royale.compiler.internal.units.ASCompilationUnit.handleABCBytesRequest:412 > > org.apache.royale.compiler.internal.units.CompilationUnitBase.processABCBytesRequest:876 > > org.apache.royale.compiler.internal.units.CompilationUnitBase$4$1.call:313 > > org.apache.royale.compiler.internal.units.CompilationUnitBase$4$1.call:309 > > org.apache.royale.compiler.internal.units.requests.RequestMaker$1.call:228 > > org.apache.royale.compiler.internal.units.requests.RequestMaker$1.call:222 > java.util.concurrent.FutureTask.run:264 > java.util.concurrent.ThreadPoolExecutor.runWorker:1128 > java.util.concurrent.ThreadPoolExecutor$Worker.run:628 > java.lang.Thread.run:829
