I encountered a strange case where a variable was changing value within the scope of an if statement, because I had a superclass with an identical variable name. I am able to reproduce it with this simple case: class A { 10000 => int foo; } class B extends A { fun void bar() { 0 => int foo; <<< "a", foo >>>; { <<< "b", foo >>>; } <<< "c", foo >>>; } } Prints out: a 0 b 10000 c 0
Ian, why do you have that innermost scope? that's not intended use of
syntax I think.
On Wed, Aug 6, 2014 at 9:00 AM, Ian South-Dickinson
I encountered a strange case where a variable was changing value within the scope of an if statement, because I had a superclass with an identical variable name. I am able to reproduce it with this simple case:
class A { 10000 => int foo; }
class B extends A { fun void bar() { 0 => int foo;
<<< "a", foo >>>; { <<< "b", foo >>>; } <<< "c", foo >>>; } }
Prints out:
a 0 b 10000 c 0
_______________________________________________ chuck-users mailing list chuck-users@lists.cs.princeton.edu https://lists.cs.princeton.edu/mailman/listinfo/chuck-users
The bug appears in other inner scopes, such as an if-statement, and
probably for/while loops.
On Wed, Aug 6, 2014 at 7:40 AM, Dealga McArdle
Ian, why do you have that innermost scope? that's not intended use of syntax I think.
On Wed, Aug 6, 2014 at 9:00 AM, Ian South-Dickinson
wrote: I encountered a strange case where a variable was changing value within the scope of an if statement, because I had a superclass with an identical variable name. I am able to reproduce it with this simple case:
class A { 10000 => int foo; }
class B extends A { fun void bar() { 0 => int foo;
<<< "a", foo >>>; { <<< "b", foo >>>; } <<< "c", foo >>>; } }
Prints out:
a 0 b 10000 c 0
_______________________________________________ chuck-users mailing list chuck-users@lists.cs.princeton.edu https://lists.cs.princeton.edu/mailman/listinfo/chuck-users
_______________________________________________ chuck-users mailing list chuck-users@lists.cs.princeton.edu https://lists.cs.princeton.edu/mailman/listinfo/chuck-users
Ah, yes.. i see now
class A
{
10000 => int foo;
}
class B extends A
{
fun void bar()
{
0 => int foo;
<<< "a", foo >>>;
if (true) {
<<< "b", foo >>>;
}
<<< "c", foo >>>;
}
}
B bobj;
bobj.bar();
indeed.
On Wed, Aug 6, 2014 at 4:51 PM, Ian South-Dickinson
The bug appears in other inner scopes, such as an if-statement, and probably for/while loops.
On Wed, Aug 6, 2014 at 7:40 AM, Dealga McArdle
wrote: Ian, why do you have that innermost scope? that's not intended use of syntax I think.
On Wed, Aug 6, 2014 at 9:00 AM, Ian South-Dickinson
wrote:
I encountered a strange case where a variable was changing value within the scope of an if statement, because I had a superclass with an identical variable name. I am able to reproduce it with this simple case:
class A { 10000 => int foo; }
class B extends A { fun void bar() { 0 => int foo;
<<< "a", foo >>>; { <<< "b", foo >>>; } <<< "c", foo >>>; } }
Prints out:
a 0 b 10000 c 0
_______________________________________________ chuck-users mailing list chuck-users@lists.cs.princeton.edu https://lists.cs.princeton.edu/mailman/listinfo/chuck-users
_______________________________________________ chuck-users mailing list chuck-users@lists.cs.princeton.edu https://lists.cs.princeton.edu/mailman/listinfo/chuck-users
_______________________________________________ chuck-users mailing list chuck-users@lists.cs.princeton.edu https://lists.cs.princeton.edu/mailman/listinfo/chuck-users
That looks like a bug alright. Thanks for letting us know! We will take a
look into it.
spencer
On Wed, Aug 6, 2014 at 10:56 AM, Dealga McArdle
Ah, yes.. i see now
class A { 10000 => int foo; }
class B extends A { fun void bar() { 0 => int foo;
<<< "a", foo >>>; if (true) { <<< "b", foo >>>; } <<< "c", foo >>>; } }
B bobj; bobj.bar();
indeed.
On Wed, Aug 6, 2014 at 4:51 PM, Ian South-Dickinson
wrote: The bug appears in other inner scopes, such as an if-statement, and probably for/while loops.
On Wed, Aug 6, 2014 at 7:40 AM, Dealga McArdle
wrote: Ian, why do you have that innermost scope? that's not intended use of syntax I think.
On Wed, Aug 6, 2014 at 9:00 AM, Ian South-Dickinson < ian.southd@gmail.com> wrote:
I encountered a strange case where a variable was changing value within the scope of an if statement, because I had a superclass with an identical variable name. I am able to reproduce it with this simple case:
class A { 10000 => int foo; }
class B extends A { fun void bar() { 0 => int foo;
<<< "a", foo >>>; { <<< "b", foo >>>; } <<< "c", foo >>>; } }
Prints out:
a 0 b 10000 c 0
_______________________________________________ chuck-users mailing list chuck-users@lists.cs.princeton.edu https://lists.cs.princeton.edu/mailman/listinfo/chuck-users
_______________________________________________ chuck-users mailing list chuck-users@lists.cs.princeton.edu https://lists.cs.princeton.edu/mailman/listinfo/chuck-users
_______________________________________________ chuck-users mailing list chuck-users@lists.cs.princeton.edu https://lists.cs.princeton.edu/mailman/listinfo/chuck-users
_______________________________________________ chuck-users mailing list chuck-users@lists.cs.princeton.edu https://lists.cs.princeton.edu/mailman/listinfo/chuck-users
Probably a good time to mention (emailed chuck-dev a few weeks back) that
we now have unit tests that run every time changes are made to ChucK.
Any time bugs are found, concise code that reproduces it (like the code
provided above) is great, because we can then just copy-and-paste it into a
new test file. :)
Original email below for anyone who wants to know more or contribute tests.
Thanks!
mc
---------
Hi all,
In between some intense StarCrafting, Spencer and I set up ChucK to be
continuously integrated on Travis CI. This means every commit/change to
ChucK ensures ChucK compiles on Mac (10.9.2) and Linux (Ubuntu 12.04), as
well as running a bunch of unit tests on both platforms.
https://travis-ci.org/ccrma/chuck/builds
This was spurred by the recent 147th shred removal causing a segmentation
fault, given we could easily test (and even further stress test) ChucK
automatically. Tests are currently in the src/test folder of the ChucK repo
on GitHub, including tests like Michael Heuer's 147 spork (and one with
over 9000 shreds) removal code in the 04-Stress folder:
https://github.com/ccrma/chuck/tree/master/src/test
Want to contribute? Feel free to fork the ChucK repo, add tests, and send a
pull request. We're not quite sure how we want to organize the tests yet so
put them in whatever folder you want. Once your tests are pulled in,
they'll be run every time a new commit is pushed to ChucK.
We're hoping this will make ChucK more stable as well as decreasing the
chance for regressing bugs.
On Wed, Aug 6, 2014 at 2:00 PM, Spencer Salazar
That looks like a bug alright. Thanks for letting us know! We will take a look into it.
spencer
On Wed, Aug 6, 2014 at 10:56 AM, Dealga McArdle
wrote: Ah, yes.. i see now
class A { 10000 => int foo; }
class B extends A { fun void bar() { 0 => int foo;
<<< "a", foo >>>; if (true) { <<< "b", foo >>>; } <<< "c", foo >>>; } }
B bobj; bobj.bar();
indeed.
On Wed, Aug 6, 2014 at 4:51 PM, Ian South-Dickinson
wrote:
The bug appears in other inner scopes, such as an if-statement, and probably for/while loops.
On Wed, Aug 6, 2014 at 7:40 AM, Dealga McArdle
wrote: Ian, why do you have that innermost scope? that's not intended use of syntax I think.
On Wed, Aug 6, 2014 at 9:00 AM, Ian South-Dickinson < ian.southd@gmail.com> wrote:
I encountered a strange case where a variable was changing value within the scope of an if statement, because I had a superclass with an identical variable name. I am able to reproduce it with this simple case:
class A { 10000 => int foo; }
class B extends A { fun void bar() { 0 => int foo;
<<< "a", foo >>>; { <<< "b", foo >>>; } <<< "c", foo >>>; } }
Prints out:
a 0 b 10000 c 0
_______________________________________________ chuck-users mailing list chuck-users@lists.cs.princeton.edu https://lists.cs.princeton.edu/mailman/listinfo/chuck-users
_______________________________________________ chuck-users mailing list chuck-users@lists.cs.princeton.edu https://lists.cs.princeton.edu/mailman/listinfo/chuck-users
_______________________________________________ chuck-users mailing list chuck-users@lists.cs.princeton.edu https://lists.cs.princeton.edu/mailman/listinfo/chuck-users
_______________________________________________ chuck-users mailing list chuck-users@lists.cs.princeton.edu https://lists.cs.princeton.edu/mailman/listinfo/chuck-users
_______________________________________________ chuck-users mailing list chuck-users@lists.cs.princeton.edu https://lists.cs.princeton.edu/mailman/listinfo/chuck-users
Possibly related (definitely perplexing): changing foo in A to “static”
class A
{
10000 => static int foo;
}
class B extends A
{
fun void bar()
{
0 => int foo;
<<< "a", foo >>>;
{
<<< "b", foo >>>;
}
<<< "c", foo >>>;
}
}
<<
participants (5)
-
Dealga McArdle
-
Ian South-Dickinson
-
Mark Cerqueira
-
Spencer Salazar
-
warren@wamoco.com