Comments (3)
The problem here is that parsing comes (way) before type inference.
Asking whether e
has a nullable type before deciding how to parse a following ?.x:y
, assuming we allow .x
as an expression, is going to complicate the compiler, because it needs to keep those tokens unparsed, or as a superposition of the two different parsings, until very late in the compilation.
And if the type inference of e
depends on the context, then whether e
is even in that context depends on how the following tokens are parsed.
The more likely approach would be to pick a default and require parentheses for the other option. (And the default is likely to be the one that parses today, so existing code won't change meaning.)
Or just insist that ?.
is a single token, so e1? .x : y
can't be a null-aware access.
from language.
The problem here is that parsing comes (way) before type inference.
Thanks for letting me know! I've updated the proposal to account for this information.
from language.
The main intent of this issue was to facilitate progress toward solving issue #3616, in which there's currently a link to a fleshed-out design proposal. I'm good with closing this and deferring to those. :)
from language.
Related Issues (20)
- Impact of adding private members HOT 14
- Sensitive object logging redaction HOT 8
- Proposals to be able to perform data analysis and AI models using Dart HOT 3
- (Don't!) Reify an intersection type as the run-time type of the promoted variable's value HOT 1
- Macro API can't generate new types based on methods and properties from the base class HOT 7
- Class inherit from generic parameter type? HOT 3
- Parameter default scopes HOT 129
- Testing for type parameter bounds HOT 14
- `identical`-based promotion
- Allow extension type to implement Record and Function types
- No implicit `dynamic` HOT 8
- if-null operator disables type checking HOT 1
- The `base` keyword is problematic HOT 4
- Design for introspection on macro metadata / annotations HOT 7
- Unify "agumentation libraries" and part files HOT 1
- Augmentations in Part files with imports, "augmentation path property" HOT 3
- Would it be possible to generate and combine code from different macros invocations in one place? HOT 4
- Target of URI doesn't exist HOT 1
- Consider running macros in rounds instead of phases HOT 7
- Inheritance and shadowing between parent files and part files. HOT 7
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 language.