Comments (6)
More than just that... any of these partial labels can be left dangling around:
def test
goto foo
end
test
def test
declare test2
test2
end
test
do
declare test
test
end
etc
from sink.
This is exposing some more weird behavior:
for: range 2
test:
say 'hi'
end
goto test
Technically valid, but feels like it shouldn't be. It jumps back into the loop, then falls out because the hidden variable is over the range. What happens if this hidden variable is reassigned?
from sink.
And we also have this beauty:
for: range 2
goto skip
var a
skip:
say a
a = 1
end
outputs:
nil
1
from sink.
And this
goto into
for: range 5
into:
say 1
end
from sink.
Okay, so rewinding this discussion a bit...
I'm talking about two broad issues:
- Incomplete labels can currently exist, and cause weird issues -- this needs to be fixed
- Goto over variable boundaries can happen -- this I'm just accepting as an acceptable cost for using
goto
in the first place, user beware
from sink.
b3c2d26 fixes
from sink.
Related Issues (20)
- Change error message in `_arg_` functions from `argument` to `item` HOT 1
- Splitting a long string causes Sink to crash HOT 5
- Lexical scoping bug with loops when variable declaration occurs before assignment HOT 4
- Reuse stack frame variables when they go out of scope HOT 2
- Add `rand.range` command HOT 1
- Add `list.permute`, `list.combine` commands HOT 2
- Create `eval` command (pseudo-closures) HOT 1
- Add runtime test to see if a native function is defined HOT 1
- build under Windows HOT 3
- Callbacks HOT 2
- Better error message if user forgets to specify script paths
- Support "\u0000" and "\U00000000" HOT 1
- `str.split a, nil` should be treated as `str.split a, ""`
- Allow destructuring assignment inside for loop
- Why does `00` error with "Invalid Call"?
- Specify indexes inside lists
- list.push and list.unshift should support multiple params
- `for: range func` fails
- Including after def fails
- array[num.nan] throws an error
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from sink.