[Swift-devel] Is the use of args within functions legal?

Ketan Maheshwari ketancmaheshwari at gmail.com
Thu Sep 19 10:08:07 CDT 2013


Mihael,

Trying the r7088 arg fix with the same script Yadu tested, I get the
following:

$ swift tmp.swift -foo="helloFOO"
Swift trunk swift-r7088 cog-r3789
RunID: 20130919-1105-tpzasdg5

Execution failed:
Missing argument 'value'
    export @ swift-lib.k, line: 45


The script is:

$ cat tmp.swift
func() {
    string FOO=arg("foo");
    string BAR="hello";
    tracef("FOO : %s  | BAR : %s\n", FOO, BAR);
}
func();



Thanks,
Ketan


On Thu, Sep 19, 2013 at 1:50 AM, Mihael Hategan <hategan at mcs.anl.gov> wrote:

> Should now be fixed in svn.
>
> There were two issues. One was that in trunk the value parameter to
> arg() was not optional. I changed that back.
>
> The other was that a missing positional parameter in karajan was not
> well detected at run-time. In this case it was picking up stuff that was
> left on the stack from other invocations. This should also be fixed.
>
> This should have been caught by the swift compiler, but it was set to
> treat the second parameter to arg() as optional, so it fell through the
> cracks.
>
> Mihael
>
>
> On Wed, 2013-09-18 at 14:03 -0700, Mihael Hategan wrote:
> > On Wed, 2013-09-18 at 15:17 -0500, Yadu Nand wrote:
> > > Sorry Mihael, I've pasted the error below.
> > > Why does the error go away, when the string assignment statements are
> > > reversed in order?
> >
> > I assume because there is a string value on the stack frame from the
> > previous invocation that the second invocation interprets as being the
> > second argument. Or something like that.
> >
> > >
> > > swift args_trunk.swift -foo="helloFOO"
> > > Swift trunk swift-r7073 (swift modified locally) cog-r3787 (cog
> modified
> > > locally)
> > > RunID: 20130918-2014-t0fyb8m1
> > > [Error] sites.xml, line 1, col 9: cvc-elt.1: Cannot find the
> declaration of
> > > element 'config'.
> > > Progress:  time: Wed, 18 Sep 2013 20:14:29 +0000
> > >
> > > Execution failed:
> > > java.lang.ClassCastException: Invalid type: expected a
> > > org.griphyn.vdl.mapping.AbstractDataNode but got a
> > > org.globus.cog.karajan.analyzer.InvalidArgChannel
> > >     swiftscript:arg @ args_trunk, line: 22
> > > Caused by: java.lang.ClassCastException: Invalid type: expected a
> > > org.griphyn.vdl.mapping.AbstractDataNode but got a
> > > org.globus.cog.karajan.analyzer.InvalidArgChannel
> > >     at
> org.griphyn.vdl.karajan.lib.swiftscript.FnArg.function(FnArg.java:63)
> > >     at
> > >
> org.griphyn.vdl.karajan.lib.SwiftFunction.runBody(SwiftFunction.java:108)
> > >     at
> > >
> org.globus.cog.karajan.compiled.nodes.InternalFunction.run(InternalFunction.java:154)
> > >     at
> > >
> org.globus.cog.karajan.compiled.nodes.CompoundNode.runChild(CompoundNode.java:87)
> > >     at
> > >
> org.globus.cog.karajan.compiled.nodes.InternalFunction.run(InternalFunction.java:147)
> > >     at
> > >
> org.globus.cog.karajan.compiled.nodes.CompoundNode.runChild(CompoundNode.java:87)
> > >     at
> > >
> org.globus.cog.karajan.compiled.nodes.Sequential.run(Sequential.java:22)
> > >     at
> > >
> org.globus.cog.karajan.compiled.nodes.CompoundNode.runChild(CompoundNode.java:87)
> > >     at
> > >
> org.globus.cog.karajan.compiled.nodes.UParallel$1.run(UParallel.java:68)
> > >     at k.thr.LWThread.run(LWThread.java:228)
> > >     at
> > >
> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
> > >     at
> > >
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
> > >     at java.lang.Thread.run(Thread.java:722)
> > >
> > > -Yadu
> > >
> > >
> > >
> > > On Wed, Sep 18, 2013 at 3:11 PM, Mihael Hategan <hategan at mcs.anl.gov>
> wrote:
> > >
> > > > Ok, the error is due to the optional value missing. There's
> shouldn't be
> > > > an error to begin with, but a temporary workaround is:
> > > >
> > > > string FOO = arg("foo", "defaultValue")
> > > >
> > > > On Wed, 2013-09-18 at 14:44 -0500, Yadu Nand wrote:
> > > > > Ketan reported a script failing for him on trunk alone and this is
> the
> > > > > condensed
> > > > > form of his script that fails consistently on trunk:
> > > > >
> > > > > func() {
> > > > >     string FOO=arg("foo");
> > > > >     string BAR="hello";
> > > > >     tracef("FOO : %s  | BAR : %s\n", FOO, BAR);
> > > > > }
> > > > > func();
> > > > >
> > > > > This script does pass on 0.94RC3, but not on Trunk. Could someone
> confirm
> > > > > if this
> > > > > is valid syntax ?
> > > > >
> > > > > Reversing the order of the assignments to the following, gets the
> test to
> > > > > pass:
> > > > >
> > > > > func() {
> > > > >     string BAR="hello";
> > > > >     string FOO=arg("foo");
> > > > >     tracef("FOO : %s  | BAR : %s\n", FOO, BAR);
> > > > > }
> > > > > func();
> > > > >
> > > > >
> > > > > ​Thanks,​
> > > > >
> > > > > Yadu
> > > > > Ketan reported a script failing for him on trunk alone and this is
> the
> > > > > condensed
> > > > >
> > > > > form of his script that fails consistently on trunk:
> > > > >
> > > > > func() {
> > > > >     string FOO=arg("foo");
> > > > >     string BAR="hello";
> > > > >     tracef("FOO : %s  | BAR : %s\n", FOO, BAR);
> > > > > }
> > > > > func();
> > > > >
> > > > >
> > > > > This script does pass on 0.94RC3, but not on Trunk. Could someone
> > > > > confirm if this
> > > > >
> > > > > is valid syntax ?
> > > > >
> > > > >
> > > > > Reversing the order of the assignments to the following, gets the
> test
> > > > > to pass:
> > > > >
> > > > > func() {
> > > > >     string BAR="hello";
> > > > >     string FOO=arg("foo");
> > > > >     tracef("FOO : %s  | BAR : %s\n", FOO, BAR);
> > > > > }
> > > > > func();
> > > > >
> > > > >
> > > > >
> > > > >
> > > > > ​Thanks,​
> > > > >
> > > > > Yadu
> > > > > _______________________________________________
> > > > > Swift-devel mailing list
> > > > > Swift-devel at ci.uchicago.edu
> > > > > https://lists.ci.uchicago.edu/cgi-bin/mailman/listinfo/swift-devel
> > > >
> > > >
> > > >
> > >
> > >
> > > Sorry Mihael, I've pasted the error below.
> > >
> > > Why does the error go away, when the string assignment statements are
> > > reversed in order?
> > >
> > >
> > > swift args_trunk.swift -foo="helloFOO"
> > > Swift trunk swift-r7073 (swift modified locally) cog-r3787 (cog
> > > modified locally)
> > > RunID: 20130918-2014-t0fyb8m1
> > > [Error] sites.xml, line 1, col 9: cvc-elt.1: Cannot find the
> > > declaration of element 'config'.
> > > Progress:  time: Wed, 18 Sep 2013 20:14:29 +0000
> > >
> > > Execution failed:
> > > java.lang.ClassCastException: Invalid type: expected a
> > > org.griphyn.vdl.mapping.AbstractDataNode but got a
> > > org.globus.cog.karajan.analyzer.InvalidArgChannel
> > >     swiftscript:arg @ args_trunk, line: 22
> > > Caused by: java.lang.ClassCastException: Invalid type: expected a
> > > org.griphyn.vdl.mapping.AbstractDataNode but got a
> > > org.globus.cog.karajan.analyzer.InvalidArgChannel
> > >     at
> > > org.griphyn.vdl.karajan.lib.swiftscript.FnArg.function(FnArg.java:63)
> > >     at
> > >
> org.griphyn.vdl.karajan.lib.SwiftFunction.runBody(SwiftFunction.java:108)
> > >     at
> > >
> org.globus.cog.karajan.compiled.nodes.InternalFunction.run(InternalFunction.java:154)
> > >     at
> > >
> org.globus.cog.karajan.compiled.nodes.CompoundNode.runChild(CompoundNode.java:87)
> > >     at
> > >
> org.globus.cog.karajan.compiled.nodes.InternalFunction.run(InternalFunction.java:147)
> > >     at
> > >
> org.globus.cog.karajan.compiled.nodes.CompoundNode.runChild(CompoundNode.java:87)
> > >     at
> > >
> org.globus.cog.karajan.compiled.nodes.Sequential.run(Sequential.java:22)
> > >     at
> > >
> org.globus.cog.karajan.compiled.nodes.CompoundNode.runChild(CompoundNode.java:87)
> > >     at org.globus.cog.karajan.compiled.nodes.UParallel
> > > $1.run(UParallel.java:68)
> > >     at k.thr.LWThread.run(LWThread.java:228)
> > >     at
> > >
> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
> > >     at java.util.concurrent.ThreadPoolExecutor
> > > $Worker.run(ThreadPoolExecutor.java:615)
> > >     at java.lang.Thread.run(Thread.java:722)
> > >
> > >
> > > -Yadu
> > >
> > >
> > >
> > >
> > >
> > > On Wed, Sep 18, 2013 at 3:11 PM, Mihael Hategan <hategan at mcs.anl.gov>
> > > wrote:
> > >         Ok, the error is due to the optional value missing. There's
> > >         shouldn't be
> > >         an error to begin with, but a temporary workaround is:
> > >
> > >         string FOO = arg("foo", "defaultValue")
> > >
> > >         On Wed, 2013-09-18 at 14:44 -0500, Yadu Nand wrote:
> > >
> > >         > Ketan reported a script failing for him on trunk alone and
> > >         this is the
> > >         > condensed
> > >         > form of his script that fails consistently on trunk:
> > >         >
> > >         > func() {
> > >         >     string FOO=arg("foo");
> > >         >     string BAR="hello";
> > >         >     tracef("FOO : %s  | BAR : %s\n", FOO, BAR);
> > >         > }
> > >         > func();
> > >         >
> > >         > This script does pass on 0.94RC3, but not on Trunk. Could
> > >         someone confirm
> > >         > if this
> > >         > is valid syntax ?
> > >         >
> > >         > Reversing the order of the assignments to the following,
> > >         gets the test to
> > >         > pass:
> > >         >
> > >         > func() {
> > >         >     string BAR="hello";
> > >         >     string FOO=arg("foo");
> > >         >     tracef("FOO : %s  | BAR : %s\n", FOO, BAR);
> > >         > }
> > >         > func();
> > >         >
> > >         >
> > >         > ​Thanks,​
> > >         >
> > >         > Yadu
> > >
> > >         > Ketan reported a script failing for him on trunk alone and
> > >         this is the
> > >         > condensed
> > >         >
> > >         > form of his script that fails consistently on trunk:
> > >         >
> > >         > func() {
> > >         >     string FOO=arg("foo");
> > >         >     string BAR="hello";
> > >         >     tracef("FOO : %s  | BAR : %s\n", FOO, BAR);
> > >         > }
> > >         > func();
> > >         >
> > >         >
> > >         > This script does pass on 0.94RC3, but not on Trunk. Could
> > >         someone
> > >         > confirm if this
> > >         >
> > >         > is valid syntax ?
> > >         >
> > >         >
> > >         > Reversing the order of the assignments to the following,
> > >         gets the test
> > >         > to pass:
> > >         >
> > >         > func() {
> > >         >     string BAR="hello";
> > >         >     string FOO=arg("foo");
> > >         >     tracef("FOO : %s  | BAR : %s\n", FOO, BAR);
> > >         > }
> > >         > func();
> > >         >
> > >         >
> > >         >
> > >         >
> > >         > ​Thanks,​
> > >         >
> > >         > Yadu
> > >         > _______________________________________________
> > >         > Swift-devel mailing list
> > >         > Swift-devel at ci.uchicago.edu
> > >         >
> > >
> https://lists.ci.uchicago.edu/cgi-bin/mailman/listinfo/swift-devel
> > >
> > >
> > >
> > >
> > >
> > >
> > > --
> > > Yadu Nand B
> > >
> > >
> >
> >
> > _______________________________________________
> > Swift-devel mailing list
> > Swift-devel at ci.uchicago.edu
> > https://lists.ci.uchicago.edu/cgi-bin/mailman/listinfo/swift-devel
>
>
> _______________________________________________
> Swift-devel mailing list
> Swift-devel at ci.uchicago.edu
> https://lists.ci.uchicago.edu/cgi-bin/mailman/listinfo/swift-devel
>



-- 
Ketan
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/swift-devel/attachments/20130919/dc0f9925/attachment.html>


More information about the Swift-devel mailing list