Commit Graph

61 Commits

Author SHA1 Message Date
Erik Ernst a9b47bd0b1 Integrated nosuchmethod-forwarding.md into dartLangSpec.tex
Change-Id: I7a29b83a69f43cb695b4305442808fa45b745faa
Reviewed-on: https://dart-review.googlesource.com/c/77440
Reviewed-by: Lasse R.H. Nielsen <lrn@google.com>
Reviewed-by: Leaf Petersen <leafp@google.com>
2018-10-10 13:35:50 +00:00
Erik Ernst 62e67d7277 Adjusted instantiate-to-bound.md such that it covers type aliases
The existing version covers generic classes only, but we should
use exactly the same rules for parameterized type aliases, which was
actually already specified in all the nested cases (e.g., `A` would mean
`A<F<dynamic>>` with the declarations `typedef F<X> = X Function();` and
`class A<X extends F<X>> {}`, but there were no rules for a plain `F`).

A rendered version corresponding to patchset 3 is available here:
https://gist.github.com/eernstg/6deffcde2cbe79f8ba499b3aac950900

Change-Id: Ic265ccc736c65361919e860b1ab7ecb947c2c066
Reviewed-on: https://dart-review.googlesource.com/c/76660
Reviewed-by: Lasse R.H. Nielsen <lrn@google.com>
2018-10-03 10:49:32 +00:00
Lasse R.H. Nielsen b9cb904a2d Fix typo in int-to-double.md
Fixes #34449.

Bug: http://dartbug.com/34449
Change-Id: Ib2103e4340f7cc2267e71690ce0f7f60a7b453e4
Reviewed-on: https://dart-review.googlesource.com/74621
Reviewed-by: Erik Ernst <eernst@google.com>
Commit-Queue: Lasse R.H. Nielsen <lrn@google.com>
2018-09-12 12:47:15 +00:00
Erik Ernst f071f7ce64 Updated the status of each feature specification as needed
Change-Id: I23c7e77ac64ce2cad288f42505ccf07257f00abc
Reviewed-on: https://dart-review.googlesource.com/71861
Reviewed-by: Lasse R.H. Nielsen <lrn@google.com>
2018-09-07 07:03:52 +00:00
Leaf Petersen 9883fcca08 Fix valid_returns tests.
The valid return tests were misnamed and hence not run.  Also remove
duplicate tests from one file, and add status to the informal proposal.

Change-Id: I20179e81a0281302056f601ee3b7a51e2aec180e
Reviewed-on: https://dart-review.googlesource.com/73562
Commit-Queue: Leaf Petersen <leafp@google.com>
Reviewed-by: Kevin Millikin <kmillikin@google.com>
2018-09-06 20:37:06 +00:00
Erik Ernst 52f2241a02 Added int-to-double.md
A rendered version of patch set 17 of this CL is available here:
https://gist.github.com/eernstg/a70884d5249abbecb68d7771cb18ae37.

Change-Id: If175f1787c11603bb4ed9bf89181cd8585afa54f
Reviewed-on: https://dart-review.googlesource.com/68683
Reviewed-by: Lasse R.H. Nielsen <lrn@google.com>
2018-09-06 09:54:56 +00:00
Erik Ernst 1acf6f768d dynamic-members.md: Make d.hashCode() and d.runtimeType() an error
A rendered version of the document as of patchset 18 is available here:
https://gist.github.com/eernstg/fc0094b0230ea18b9507092e50dab537

Change-Id: Iad21bd3e8f31847cfdc0a217249de44d5424e2b4
Reviewed-on: https://dart-review.googlesource.com/72700
Reviewed-by: Lasse R.H. Nielsen <lrn@google.com>
2018-09-04 15:24:41 +00:00
Leaf Petersen f88582e74f Improve wording in invalid return spec per comments.
Change-Id: I78f94a2e36c5ba8156fffc840e7bc8a9dd6aeafb
Reviewed-on: https://dart-review.googlesource.com/70542
Reviewed-by: Kevin Millikin <kmillikin@google.com>
2018-08-20 18:19:22 +00:00
Leaf Petersen 891b7164ac Fix overly strict invalid return checking.
In changing the proposed spec to address comments in a way that was intended to be
non-breaking, I accidentally introduced some new (unintended) restrictions.  This
fixes the spec, rolls back the change in analyzer, and adjusts the language tests
appropriately.

Change-Id: I487b0eaacbfa1447d4ee909c0a56e435c2088990
Reviewed-on: https://dart-review.googlesource.com/70462
Reviewed-by: Mike Fairhurst <mfairhurst@google.com>
2018-08-17 01:25:18 +00:00
Sam Rawlins 98c8cfc827 Add note to language/informal deprecating the directory
Change-Id: I2b2d564f994f5680608607b369a7b2b45d8a2154
Reviewed-on: https://dart-review.googlesource.com/69640
Reviewed-by: Leaf Petersen <leafp@google.com>
Commit-Queue: Samuel Rawlins <srawlins@google.com>
2018-08-14 01:03:48 +00:00
Leaf Petersen 75f92ac8fe Point old super mixin informal spec to canonical copy
Change-Id: I96618343c4a60c906bddcb15f2cd10996f097dff
Reviewed-on: https://dart-review.googlesource.com/68849
Reviewed-by: Erik Ernst <eernst@google.com>
2018-08-08 17:07:47 +00:00
Erik Ernst 0c187585c5 Added return-void-2-dynamic to whitelist of generalized-void.md
We need to clarify the following case:
`dynamic foo() => print('');`,
`dynamic bar() { return print(''); }`
that is, using `return e` where `e` has type `void`, when the return
type of the enclosing function is `dynamic` (inferred or explicit).

We do not currently have any elements in the generalized-void.md
whitelist for that, so it's an error. However, invalid_returns.md
from https://dart-review.googlesource.com/c/sdk/+/60401 implies
(patchset 6: line 19-20 and 34-35) that it is allowed.
It is my impression that we agree on invalid_returns.md, and also
that it describes the current behavior (maybe not 100%?).

This indicates to me that we should, probably, add an element to
the above-mentioned whitelist to allow it.

This CL makes that change to generalized-void.md.

Change-Id: I0326081960deda907b3b4ff34bd2d60f7c9dc35b
Reviewed-on: https://dart-review.googlesource.com/64341
Reviewed-by: Erik Ernst <eernst@google.com>
2018-08-01 12:18:07 +00:00
Erik Ernst 6920d6b11e Added specification of generated nSM forwarders for private methods
The issue was raised recently that there must be generated forwarders
for some method signatures that we had not previously mentioned in
nosuchmethod-forwarders.md: Private methods with an inaccessible name,
that is, private methods declared in a different library than the
current target of nSM forwarder generation.

Given that such forwarders are semantically significant (a tear-off
performed in the library where the abstract private method declaration
is located would tear off a generated forwarder, rather than causing
an invocation of `noSuchMethod`), we need to specify this.

This CL adds such a specification to nosuchmethod-forwarders.md.

This CL addresses SDK issue #33725, and SDK issue #33727 is related
being concerned with the implementation in the common front
end.

Change-Id: Iedbcdd8b4c8df95c6038022f72b3211ec1b76649
Reviewed-on: https://dart-review.googlesource.com/64380
Reviewed-by: Erik Ernst <eernst@google.com>
2018-08-01 12:00:28 +00:00
Lasse R.H. Nielsen 61148eade8 Update mixin-declaration feature specification.
Change-Id: I0c4d2a3e49eb90758ac854a20c5ba5424f32ad3b
Reviewed-on: https://dart-review.googlesource.com/51640
Reviewed-by: Leaf Petersen <leafp@google.com>
Reviewed-by: Erik Ernst <eernst@google.com>
2018-07-30 23:45:42 +00:00
Leaf Petersen 73663ae7c6 Allow void on the RHS of null coalescing expressions
Change-Id: I2e2d16c890c735260669d60725085861e66996aa
Reviewed-on: https://dart-review.googlesource.com/67081
Reviewed-by: Erik Ernst <eernst@google.com>
2018-07-30 17:44:40 +00:00
Leaf Petersen 02ba125a14 Add informal spec for invalid returns.
This mostly documents and regularizes existing (post bug fix) semantics,
with a small additional restriction on returning `void` from an async
function.

Change-Id: Ic1a302aeb666fa73ca2b7e23072394490bb4fe76
Reviewed-on: https://dart-review.googlesource.com/60401
Reviewed-by: Lasse R.H. Nielsen <lrn@google.com>
2018-07-26 22:07:14 +00:00
Erik Ernst b8098e9683 Added new feature spec generic-function-instantiation.md.
This CL adds a new feature specification for 'generic function
instantiation' (aka partial specialization, type-curried invocation,
etc.), which amounts to implicitly obtaining a non-generic function
from a denotation of a generic function when the typing requires the
latter.

This feature spec relies on type inference, but as a black box (so
it can hardly be incompatible with any current or future version of
type inference in Dart).

Note that it is a restricted version of generic function
instantiation which is specified here, it only supports global and
static functions and instance methods; function literals and first
class function values are not supported.

I just learned from Vijay (Mar 23, 3pm CET) that first class functions
_do_ support generic function instantiation in some existing
implementations. So maybe there is no problem supporting them, and
we should just eliminate that restriction?

Here is a rendered version of the document, refreshed to match patch
set 19: https://gist.github.com/eernstg/bf816d3495e9b87ab6eb958ba707d016

Change-Id: Ie1fd601d3e359bfb5f4616f8ec68a110f42e01b7
Reviewed-on: https://dart-review.googlesource.com/47043
Reviewed-by: Lasse R.H. Nielsen <lrn@google.com>
2018-07-11 14:49:58 +00:00
Erik Ernst bfa8be887a Extending dartLangSpec.tex with super-bounded types and variance.
Change-Id: I09d01a21f8b227d46ddafedea223b1c765a1d29c
Reviewed-on: https://dart-review.googlesource.com/56981
Reviewed-by: Leaf Petersen <leafp@google.com>
2018-06-05 15:23:06 +00:00
Erik Ernst e20189ecf5 Adjusted the instantiate-to-bound algorithm to break cycles at
every member, not just one.

Note that a fresh copy of this document with rendering is available
at https://gist.github.com/eernstg/6deffcde2cbe79f8ba499b3aac950900.

Change-Id: Ia7e3d8e2c36b254102e2c1cc5dafc4572746079d
Reviewed-on: https://dart-review.googlesource.com/43100
Commit-Queue: Erik Ernst <eernst@google.com>
Reviewed-by: Leaf Petersen <leafp@google.com>
2018-05-28 16:01:45 +00:00
Erik Ernst 640791c922 Add example to docs/language/informal/super-bounded-types.md.
This CL adds an example to super-bounded-types.md in order to motivate
the definition of what it means for a parameterized type based on a
type alias to be super-bounded. The definition says that we must check
the actual type arguments relative to the formal type parameter
list of the given `typedef` as well as the right hand side, replacing
the formals by the given actual type arguments. The example shows that
the right hand side can be ill-bounded even though the check that we
apply based on the formal type parameter bounds (that is, the check
that we apply to class types) succeeds.

A rendered version of super-bounded-types.md corresponding to patchset
6 is available here:
https://gist.github.com/eernstg/fc12eeb23064a2578a936b443461dde4.

Change-Id: I33dc6ced592f53160bc6f933558bfface46cd329
Reviewed-on: https://dart-review.googlesource.com/56668
Commit-Queue: Erik Ernst <eernst@google.com>
Reviewed-by: Leaf Petersen <leafp@google.com>
2018-05-28 10:12:34 +00:00
Erik Ernst 6ed3b162d6 Added feature specification for upper/lower bounds of top/bottom types
A rendered version can be found here, and it was updated to match
patch set 12:
https://gist.github.com/eernstg/df0d69c85724e1179835a43bf9e63adc

The issue where this topic was raised is
https://github.com/dart-lang/sdk/issues/28513.

Change-Id: I21e4df42348a51f482c42d1c29595e475823e5dc
Reviewed-on: https://dart-review.googlesource.com/53211
Commit-Queue: Erik Ernst <eernst@google.com>
Reviewed-by: Leaf Petersen <leafp@google.com>
2018-05-25 16:05:20 +00:00
Erik Ernst 46a9ed0617 Added example about calling a tear-off with a wrong-shape argument list
The rendered version has been updated: https://gist.github.com/eernstg/683310d8de99089ec3d05f3f4954c151

Change-Id: Id556e6d4dcd30c2da3f434049242bfbed6363341
Reviewed-on: https://dart-review.googlesource.com/47800
Reviewed-by: Leaf Petersen <leafp@google.com>
2018-05-03 11:57:17 +00:00
Erik Ernst 6802746ad7 Fixed a couple of typos in subtyping.md
Sergey pointed out a couple of name clashes, and I renamed some indices
in order to avoid them. At the same time, I fixed a couple of typos
and adjusted the whitespace to be more similar to other *.md files.

Finally, I adjusted the wording involving 'algorithmic' and 'syntax
directed' in order to make it explicit that they stand for the same
thing.

Change-Id: Ic03b907f4bdc722d9ba218d38077addf9cc4a777
Reviewed-on: https://dart-review.googlesource.com/50981
Reviewed-by: Leaf Petersen <leafp@google.com>
2018-04-13 05:59:02 +00:00
Erik Ernst cf93009caf Removed the magic const feature from implicit-creation.md
Here is a rendered version of the document which was
updated to match patch set 7:
https://gist.github.com/eernstg/cc2e6bc384fc722416a5fb58a1166034.

Change-Id: I2902fe4fcb86d01b4fe70ba1aab0d749f833ff39
Reviewed-on: https://dart-review.googlesource.com/49903
Reviewed-by: Lasse R.H. Nielsen <lrn@google.com>
Reviewed-by: Leaf Petersen <leafp@google.com>
2018-04-10 14:33:56 +00:00
Erik Ernst 472ec7780f Added first draft spec of dynamic-members.md
In response to the discussions in SDK issue 32414 about the typing of
members of `Object` when the receiver type is `dynamic`.

A rendered version of this document is available at
https://gist.github.com/eernstg/fc0094b0230ea18b9507092e50dab537
(uploaded as of patchset 6).

Change-Id: I3a74ecd5e7c9c9c05fadda5b1fa0d644561796e9
Reviewed-on: https://dart-review.googlesource.com/46247
Reviewed-by: Lasse R.H. Nielsen <lrn@google.com>
Reviewed-by: Leaf Petersen <leafp@google.com>
Reviewed-by: Jenny Messerly <jmesserly@google.com>
2018-03-14 16:50:03 +00:00
Erik Ernst 7d07f8d68b Add new allowed placements of void expressions for void-to-void flow.
As an example of a void-to-void data flow, consider `void x = foo();`,
where `foo` has return type `void`. In general, a void-to-void data
flow is a computation which is trivial (we may select one of two
branches in a conditional expression and otherwise only pass the value
on without any computation) where the expression being evaluated has
type void, and the target that receives the value is also of type
void.

This CL makes adjustments to generalized-void.md such that void-to-void
data flows are allowed.

Change-Id: Ia1722cd399c77c57cc5c61e9c10b7a84a18fe107
Reviewed-on: https://dart-review.googlesource.com/38060
Reviewed-by: Lasse R.H. Nielsen <lrn@google.com>
Reviewed-by: Leaf Petersen <leafp@google.com>
Commit-Queue: Erik Ernst <eernst@google.com>
2018-03-14 16:46:40 +00:00
Leaf Petersen c8ee601268 Add feature specification draft for Dart 2.0 subtyping
This is a draft of a feature specification for the Dart 2.0 subtyping
relation.

See https://github.com/dart-lang/sdk/blob/2_0_subtyping/docs/language/informal/subtyping.md
to preview the markdown during review.

Bug:
Change-Id: Ib67fdb22b68a45e8dc1c1831326c82e735c89404
Reviewed-on: https://dart-review.googlesource.com/30927
Reviewed-by: Erik Ernst <eernst@google.com>
2018-03-06 00:02:38 +00:00
Leaf Petersen fdaaa874a0 Draft feature specification for mixin inference
Change-Id: I0c1aa6877cc4b33adcd0be15800d93667d149545
Reviewed-on: https://dart-review.googlesource.com/38940
Reviewed-by: Erik Ernst <eernst@google.com>
2018-02-23 05:56:03 +00:00
Erik Ernst f5a00ae3a8 Removed references to FutureOr<void> from generalized-void.md
It turns out that the special case for FutureOr<void> that I added in
https://dart-review.googlesource.com/c/sdk/+/35920 was misunderstood,
nobody really wanted it.

This CL removes all references to `FutureOr` in generalized-void.md,
which removes that special case and also the concept of types that are
"void equivalent" (because such types are not used any more).

The message here is that we are now more consistent in our protection
of developers against accidentally discarding a value which is
meaningful (just like `void foo() { return 42; }`), because they've
forgotten that the return type is `void`.

Change-Id: Ia4e6e00b2d33ff434923de7eb78d000cd7cc1c3e
Reviewed-on: https://dart-review.googlesource.com/41822
Reviewed-by: Lasse R.H. Nielsen <lrn@google.com>
Reviewed-by: Leaf Petersen <leafp@google.com>
2018-02-22 07:58:19 +00:00
Erik Ernst c01d59bc7e Adjusted generalized-void.md to make for-in on a void iterator an error, except when the iteration variable has type void.
A similar rule applies to asynchronous for-in loops.

Change-Id: I88ba234c27a38167eaac0350d269e88894a0fe9e
Reviewed-on: https://dart-review.googlesource.com/35920
Reviewed-by: Leaf Petersen <leafp@google.com>
Reviewed-by: Lasse R.H. Nielsen <lrn@google.com>
Commit-Queue: Erik Ernst <eernst@google.com>
2018-02-14 18:44:03 +00:00
Erik Ernst 9f9987f709 It is now an error to have void foo() { return 42; }
The language team several times agreed to make it an error when a
non-void expression `e` is used in `return e;` in the body of a
function whose return type is `void`.

When `void` is changed from a near-bottom type to a top type, the
wording in the language specification (dartLangSpec.tex) does _not_
ensure that this is an error, because all types are assignable to
`void`, so we need a specific rule saying that it is an error.

This CL adds such a rule to the feature spec for generalized void.
It also adds a rule that makes it an error to have return type `void`
in a function marked `async*` or `sync*`, based on the reasoning
that they "are returning a Future/Stream/Iterable semantically",
and it would now be an error if they did that explicitly.

Change-Id: I22fed9e9fc6097bb50100a151b964045e41ef173
Reviewed-on: https://dart-review.googlesource.com/35680
Reviewed-by: Leaf Petersen <leafp@google.com>
Commit-Queue: Erik Ernst <eernst@google.com>
2018-02-14 11:15:12 +00:00
Erik Ernst 6e3a274c5f "Magic" implicit creation.
Description which is relevant as of January 2018:

The more aggressive approach where `const` is inserted whenever
possible (for instance creation expressions) and whenever required
(for composite literals), and `new` is inserted otherwise, is now
the agreed policy. This means that the remaining discussion is on
the specification of this policy, not the policy itself. This has
been true approximately since Dec 1st, 2017.

Here is a brief overview of the feature which is specified in the
document added by this CL:

The introduction of 'implicit creation' adjusts the grammar such
that instance creation expressions (such as `new C()`) can always
omit the keyword (`new` or `const`). The semantics is that these
expressions will still invoke the same constructor (which may
produce a fresh instance in case of a generative constructor, and
some object that may or may not be new in case of a factory),
as if `new` or `const` had been added implicitly. The choice of
whether to add `new` or `const` is made according to the policy
described above.

----------------------------------------------------------------------
Original description, FYI:

Copy of Rietveld 3012703002: magic optional const

Adjusted informal spec optional-new to insert `const` whenever possible

The current version of optional-new.md specifies that `const` should be
inserted into certain syntactic phrases (when specific identifiers
satisfy some constraints), but only when these phrases occur in a const
context.

This CL changes that approach and specifies that `const` should also be
inserted outside const contexts, if the resulting expression is a
correct constant expression.

We haven't yet decided on whether we want the current (predictable)
model or we want the more "magic" one specified in this CL; this CL
is intended to be landed if we choose the latter, and discarded if we
choose the former.

Change-Id: I602e7eaf3d4c7904277af45c6f62089c77bd5117
Reviewed-on: https://dart-review.googlesource.com/3160
Reviewed-by: Leaf Petersen <leafp@google.com>
Reviewed-by: Lasse R.H. Nielsen <lrn@google.com>
2018-02-12 09:03:00 +00:00
Erik Ernst b70145b56a Adjust covariant-from-class.md to specify strict overriding.
The covariant parameter related feature specs were written to specify
that overriding admits a type annotation `T` on a formal parameter as
long as `T <: S` or `S <: T` for every type annotation `S` on a
corresponding formal parameter in an overridden declaration (directly
or indirectly).

This CL changes the rules such that a covariant-from-class parameter
must satisfy the standard constraints (contravariance) instead, which
is needed in order to ensure that an important optimization (on self-
sends) is valid.

This makes the spec follow the actual implementation, i.e., the change
will not break any existing software.

Change-Id: Ic871cc16c09220a385d68d9ec32c7a06683db87b
Reviewed-on: https://dart-review.googlesource.com/37664
Reviewed-by: Lasse R.H. Nielsen <lrn@google.com>
Reviewed-by: Leaf Petersen <leafp@google.com>
Commit-Queue: Erik Ernst <eernst@google.com>
2018-02-07 17:43:29 +00:00
Erik Ernst 9f803a36eb Adjusted status indications on feature specs
The Dart 1 specification of 'generic method syntax' had no status
indicator, it is now marked as 'background material' because generic
methods (in full) have been integrated into the language specification.
Several other changes of a similar nature.

Implication: It should now be possible for readers of these documents
to trust their status indication. As we go, we will need to update them
again, especially when something is integrated into the language
specification.

Do we want to migrate background material to another directory? Do we
want to rename the directory `informal` to `feature` or somesuch?

Change-Id: Ia3851bdbe7b5a46d71848c376906f95feb4db349
Reviewed-on: https://dart-review.googlesource.com/34663
Reviewed-by: Lasse R.H. Nielsen <lrn@google.com>
2018-01-16 13:22:28 +00:00
Erik Ernst af430f37a8 Added informal specification of super-bounded types.
Change-Id: I4764faa8250af61bf8cda9cf6a854e2bd7d726f2
Reviewed-on: https://dart-review.googlesource.com/14042
Reviewed-by: Leaf Petersen <leafp@google.com>
Reviewed-by: Lasse R.H. Nielsen <lrn@google.com>
2018-01-11 09:16:11 +00:00
Erik Ernst a6d422957d Adjusted nosuchmethod-forwarding.md
This CL changes said document to drop support for requested generation
of forwarder in case of a conflict. Developers must then write a
disambiguating method implementation themselves.

Note that this is what we already agreed during discussions about
this feature, but I noted that it hadn't yet been written into the
document.

Also changes the status to 'under implementation'.

Change-Id: I31b3dd8d65438484824225ad7067d36462d26aa7
Reviewed-on: https://dart-review.googlesource.com/22421
Commit-Queue: Erik Ernst <eernst@google.com>
Reviewed-by: Leaf Petersen <leafp@google.com>
2017-12-01 12:39:19 +00:00
Erik Ernst 062e5d6db3 Now explicitly defines variant occurrences of type parameters.
The discussion about SDK issue 31305 showed that the definition of
covariant/contravariant/invariant occurrences need to be given
somewhere, and also that covariant-from-class.md is a reasonable place
to put it.

This CL adds those definitions there, based on Leaf's proposal in the
above-mentioned issue, and adjusts the definition of what it means to
be a covariant parameter such that the case where the relevant type
parameter occurs in the bound of a formal type parameter in a function
type is taken into account.

(It also reformats the document to stay within 80 columns and follow
the style of newer informal specs more closely, but that should be
easy to skip over because Gerrit colors white space changes
differently from "real" changes).

Change-Id: I0b0a688c616d0bb56755ceea08e1792abfa7936d
Reviewed-on: https://dart-review.googlesource.com/23422
Commit-Queue: Erik Ernst <eernst@google.com>
Reviewed-by: Lasse R.H. Nielsen <lrn@google.com>
2017-11-24 09:21:47 +00:00
Erik Ernst 9bd60376ef Clarified examples in covariant-from-class.
Change-Id: I6bbf51b7f3c5fd46d8ce59e860cf615e26308560
Reviewed-on: https://dart-review.googlesource.com/21346
Reviewed-by: Lasse R.H. Nielsen <lrn@google.com>
Commit-Queue: Erik Ernst <eernst@google.com>
2017-11-16 13:25:52 +00:00
Erik Ernst 1e25e4814b Clarified semantics of transformation in optional-new.md.
Change-Id: Ieb8e323a37f66713067f8a33a5d3a8596e840458
Reviewed-on: https://dart-review.googlesource.com/14401
Reviewed-by: Lasse R.H. Nielsen <lrn@google.com>
Reviewed-by: Bob Nystrom <rnystrom@google.com>
Commit-Queue: Erik Ernst <eernst@google.com>
2017-10-20 13:46:22 +00:00
Erik Ernst 338b070178 Added informal specification of instantiate to bound.
Change-Id: Ie4b05f16006743207be76e26195ff345bf2efc6b
Reviewed-on: https://dart-review.googlesource.com/5765
Reviewed-by: Lasse R.H. Nielsen <lrn@google.com>
Commit-Queue: Erik Ernst <eernst@google.com>
2017-10-13 10:03:43 +00:00
Erik Ernst 4cf0e65814 Adjusted optional-{new,const}.md according to feedback by mail.
Eliminated the imprecise notion of an immediate subexpression.
Included missing rule for transformation of composite literals
(lists and maps). Some smaller fixes according to feedback by
mail.

Change-Id: I03e58dd24b370b797cda084bd064c6f0db22f8fb
Reviewed-on: https://dart-review.googlesource.com/4383
Reviewed-by: Lasse R.H. Nielsen <lrn@google.com>
Reviewed-by: Bob Nystrom <rnystrom@google.com>
2017-10-11 15:49:06 +00:00
Erik Ernst 1ba7ba01ff Added informal spec of "no such method forwarding".
Change-Id: Ifa3bb120566daf0963dbb88db380fbb0e0db26c1
Reviewed-on: https://dart-review.googlesource.com/6500
Commit-Queue: Erik Ernst <eernst@google.com>
Reviewed-by: Florian Loitsch <floitsch@google.com>
Reviewed-by: Leaf Petersen <leafp@google.com>
Reviewed-by: Bob Nystrom <rnystrom@google.com>
2017-10-10 15:38:42 +00:00
Erik Ernst 83e8cf3d0b Added language on covariant fields to covariant-overrides.md.
Change-Id: I2c2857f5e32328bfe4693038e7ef376f8633758e
Reviewed-on: https://dart-review.googlesource.com/12296
Reviewed-by: Lasse R.H. Nielsen <lrn@google.com>
Commit-Queue: Erik Ernst <eernst@google.com>
2017-10-10 15:01:11 +00:00
Florian Loitsch 76031341af Fix whitespace in int64 proposal.
Change-Id: I241552b790ce6672dc5456e78a70165ef08a9394
Reviewed-on: https://dart-review.googlesource.com/9661
Reviewed-by: Lasse R.H. Nielsen <lrn@google.com>
2017-09-29 19:46:18 +00:00
Florian Loitsch 71bd158704 Add public Vipunen results link.
Change-Id: Ib39bb812204b08b8de8f4b9c2aa0e3de43d85ece
Reviewed-on: https://dart-review.googlesource.com/9680
Reviewed-by: Vyacheslav Egorov <vegorov@google.com>
Commit-Queue: Vyacheslav Egorov <vegorov@google.com>
2017-09-29 16:37:22 +00:00
Florian Loitsch 7c1af28ddb Add Int 64 proposal.
Change-Id: I4e9b4dc72efe9159dbe5f922893776fc282cf7ef
Reviewed-on: https://dart-review.googlesource.com/8560
Reviewed-by: Lasse R.H. Nielsen <lrn@google.com>
2017-09-28 09:14:04 +00:00
Erik Ernst c15eed1269 Added metadata to new function type syntax parameter specifications
In https://github.com/dart-lang/sdk/issues/30732 the concern was raised
that the new Function type syntax does not support metadata on
parameter specifications (i.e., on normalParameterTypes and on
namedParameterTypes).

The implication of adding support for metadata in these locations is
that `@required` can be used on function types, which is the motivation
for submitting 30732.

We have always had support on parameter declarations in function typed
parameter declarations (`void foo(@A() int f(@A() String s))`), so in
this sense there is no new semantics to worry about (Lasse: "it doesn't
mean anything anyway!").

This CL modifies the generic-function-type-alias.md informal spec to
include this kind of metadata support.

Change-Id: I4520d330458242b31c991f62c03ca2f34f9c5e54
Reviewed-on: https://dart-review.googlesource.com/5762
Commit-Queue: Erik Ernst <eernst@google.com>
Reviewed-by: Bob Nystrom <rnystrom@google.com>
Reviewed-by: Lasse R.H. Nielsen <lrn@google.com>
2017-09-18 09:31:08 +00:00
Erik Ernst 839c321608 Generalized void informal spec clarified in several locations.
R=lrn@google.com

Review-Url: https://codereview.chromium.org/2994363003 .
2017-08-31 12:10:06 +02:00
Erik Ernst 00e98af7ef Adjusted the optional-const/new specs.
The informal specifications of optional-const and optional-new used to
be incomplete, and this CL adds missing parts (transformation rules for
lists and maps, and for `assignableExpression`).

This version of the documents preserves the property that no `const` is
added without immediate syntactic justification.

The alternative (where `const` is used also in other contexts where
either `const` or `new` must be added, just because we can do that)
is not specified here, that'll be another CL. The corrections done in
this CL will be needed, anyway, so I separated the two.

R=lrn@google.com

Review-Url: https://codereview.chromium.org/3005833002 .
2017-08-30 18:53:43 +02:00
Erik Ernst 6fc097670c Added informal spec of optional const/new to docs/language/informal.
R=lrn@google.com

Review-Url: https://codereview.chromium.org/3000133002 .
2017-08-17 11:33:04 +02:00