Comments (4)
One problem that will have to be solved too, when the first variant type of a sumtype declaration, gets used to define the default value, is that currently v fmt -w .
will reorder the sumtype variants in alphabetical order, and it should not, since the first type will have a semantic meaning in the future.
from v.
The same is true for interface values too - they also do not have default values.
For them, the problem is mitigated a bit because we do have an error for some situations involving them:
a.v:2:6: error: cannot instantiate interface `Abc`
1 | interface Abc{}
2 | a := Abc{}
| ~~~~~
3 | dump(a)
#1 20:03:14 ^ master /v/oo>
but others are still allowed:
a.v:2:6: warning: arrays of interfaces need to be initialized right away, therefore `len:` cannot be used (unless inside `unsafe`, or if you also use `init:`)
1 | interface Abc{}
2 | a := []Abc{len:4}
| ~~~~~~
3 | dump(a)
[a.v:3] a: [unknown interface value, unknown interface value, unknown interface value, unknown interface value]
and even runtime errors, with no complains from the compiler:
interface Abc{}
struct MyStruct { i Abc }
a := []MyStruct{len:4}
dump(a)
producing:
#148 20:05:19 ^ master /v/oo>v run a.v
/tmp/v_1000/a.01J516DMX1F1X3GBBFX1R951GE.tmp.c:2277: at indent_main__Abc_str: RUNTIME ERROR: invalid memory access
/tmp/v_1000/a.01J516DMX1F1X3GBBFX1R951GE.tmp.c:2264: by indent_main__MyStruct_str
/tmp/v_1000/a.01J516DMX1F1X3GBBFX1R951GE.tmp.c:2216: by indent_Array_main__MyStruct_str
/tmp/v_1000/a.01J516DMX1F1X3GBBFX1R951GE.tmp.c:2210: by Array_main__MyStruct_str
/tmp/v_1000/a.01J516DMX1F1X3GBBFX1R951GE.tmp.c:2233: by _v_dump_expr_Array_main__MyStruct
/tmp/v_1000/a.01J516DMX1F1X3GBBFX1R951GE.tmp.c:13400: by main__main
from v.
It could always alphabetize all the types after the first, but that seems like more trouble than it's worth.
Changing the defaults for interfaces may also need it's own separate issue... seems like a much bigger problem than sum types.
from v.
Just wanted to confirm that agree with this notion.
from v.
Related Issues (20)
- C error when comparing array to nil
- Compiler error when trying to convey a variadic argument set HOT 3
- Invalid conversion from camel to snake string with numbers HOT 4
- C error when returning a fixed-size array (NOTE: initialization with a for loop doesn't help) HOT 2
- C error when initializing fixed-size array HOT 2
- Returning fixed size arrays is still making C errors, even with the size being a normal int HOT 2
- C error - multiple returns values and fixed arrays
- Issue with Sokol and STBI openning images.
- cgen: Free optional string
- const name shadowing HOT 3
- -autofree fails on if statement containing strings
- rand.pcg32 breaks -autofree
- volt.im (the volt instant messaging platform written in v) doesnt work
- cgen: free optional map array
- Can't build tagged versions anymore HOT 4
- radamsa
- compiler with `-silent` flag crashes
- mysql bug on macosx
- parser crash, discovered through radamsa
- parser panic for reaching eof too many times, discovered through radamsa
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 v.