[rules-users] Functions with array parameters (double[]) cease to compile in 5.2.0

Wolfgang Laun wolfgang.laun at gmail.com
Tue Aug 16 14:49:01 EDT 2011


Indeed. It seems that, from 5.2.0 on, when there is a DRL file containing a
function with a signature that contains a parameter that is an array of some
simple type foo (int, double,...) and a scalar parameter of the same type
and another function with a similar signature, an inappropriate syntax error
is flagged:
[ <functionname> : unable to resolve type while building function ]

E.g.
function nextPoint( int[] a, int n ){ }
function prevpoint( int[] a, int n ){ }

@ru: Splitting the DRL might be a workaround, but this might not be easy as
this is generated code.

-W



On 16 August 2011 17:10, ru <sorokin at oogis.ru> wrote:

> Situation definitely treaky - I am working as author on DroolsTab plugin to
> Protege (http://protegewiki.stanford.edu/wiki/DroolsTab). In this project
> drl file is generated programmatically and sent through pipe to
> PackageBuilder. I did some experiments as you suggested. Results:
>
> 1. Only one function in package does not produce error messages
> 2. Two similar functions produce only one error message "In package
> TestExecutor error: [ prevPoint : unable to resolve type while building
> function
>  ]
>  function name: prevPoint" and allways on last function in spite of their
> order.
>
> Here is corresponding drl file:
>
> package TestExecutor
>
> import ru.oogis.pins.*
> import ru.oogis.dro.*
> import ru.igis.omtab.*
> import java.util.*
> import ru.oogis.util.DroClock
> import com.bbn.openmap.proj.coords.LatLonPoint
> import edu.stanford.smi.protege.model.Cls
> import edu.stanford.smi.protege.model.Slot
> import edu.stanford.smi.protege.model.Project
> import edu.stanford.smi.protege.model.Instance
> import edu.stanford.smi.protege.model.KnowledgeBase
> import edu.stanford.smi.protege.server.RemoteProjectManager
> import java.io.*
> import com.bbn.openmap.omGraphics.OMGraphicList
> import groovy.lang.Binding
> import groovy.lang.GroovyShell
> import java.awt.Component
> import com.bbn.openmap.layer.location.LocationLayer
> import com.bbn.openmap.layer.location.LocationHandler
> import clojuretab.ClojureTab
> import com.bbn.openmap.MapBean
> import com.bbn.openmap.proj.GreatCircle
> import com.bbn.openmap.layer.e00.E00Layer
> import com.bbn.openmap.omGraphics.OMPoly
> import com.bbn.openmap.proj.ProjMath
>
> function ArrayList nextPoint( int N, int t1, int sec, double[] a, double v
> )
> { int Nxt = N+1;
> int Nxt2 = Nxt * 2;
> if(Nxt2 >= a.length-1)
>    return null;
> int N2 = N * 2;
> double p1 = a[N2];
> double l1 = a[N2+1];
> double p2 = a[Nxt2];
> double l2 = a[Nxt2+1];
> double D = GreatCircle.sphericalDistance(p1, l1, p2, l2);
> int dt = sec - t1;
> double ds = dt * v;
> if(ds > D){
>    int t2 = (int) (t1 + D / v);
>    return nextPoint(Nxt, t2, sec, a, v);
> } else {
>     double az = GreatCircle.sphericalAzimuth(p1, l1, p2, l2);
>    double[] sb = GreatCircle.sphericalBetween(p1, l1, ds, az, 1);
>     ArrayList al = new ArrayList();
>    al.add(N);
>    al.add(t1);
>    al.add(new double[]{sb[2], sb[3]});
>    al.add(az);
>    return al;
> } }
>
> function ArrayList prevPoint( int N, int t1, int sec, double[] a, double v
> )
> { int Npv = N-1;
> int Npv2 = Npv * 2;
> if(Npv2 < 0)
>     return null;
> int N2 = N * 2;
> double p1 = a[N2];
> double l1 = a[N2+1];
> double p2 = a[Npv2];
> double l2 = a[Npv2+1];
> double D = GreatCircle.sphericalDistance(p1, l1, p2, l2);
> int dt = sec - t1;
> double ds = dt * v;
> if(ds > D){
>    int t2 = (int) (t1 + D / v);
>     return prevPoint(Npv, t2, sec, a, v);
> } else {
>    double az = GreatCircle.sphericalAzimuth(p1, l1, p2, l2);
>    double[] sb = GreatCircle.sphericalBetween(p1, l1, ds, az, 1);
>     ArrayList al = new ArrayList();
>    al.add(N);
>    al.add(t1);
>    al.add(new double[]{sb[2], sb[3]});
>    al.add(az);
>    return al;
> } }
>
> In 5.1.1 all have been compiling well and working great :) :(
>
> --
> View this message in context:
> http://drools.46999.n3.nabble.com/Functions-with-array-parameters-double-cease-to-compile-in-5-2-0-tp3251260p3258930.html
> Sent from the Drools: User forum mailing list archive at Nabble.com.
> _______________________________________________
> rules-users mailing list
> rules-users at lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/rules-users
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.jboss.org/pipermail/rules-users/attachments/20110816/7135fccc/attachment.html 


More information about the rules-users mailing list