Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Specify null safety #2605

Open
wants to merge 84 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
84 commits
Select commit Hold shift + click to select a range
0b550b3
Rebasing
eernstg Oct 7, 2021
ef17572
Typos: Escaping braces meant to be code
eernstg Oct 8, 2021
f3faf0c
Eliminated text about migration features, adapted the remaining text …
eernstg Oct 8, 2021
9ce0da1
Rebasing
eernstg Oct 13, 2021
3cd7774
Reorganized material on null/Null
eernstg Oct 14, 2021
1485551
Rebase
eernstg Oct 18, 2021
86c5b2a
Rebasing
eernstg Oct 27, 2021
5c53b76
Rebase
eernstg Nov 1, 2021
6f87b6b
WIP
eernstg Nov 9, 2021
b1c3e3d
Corrected last part of section Variables
eernstg Nov 10, 2021
97308b5
Did expression typing, spread element, i2b
eernstg Nov 11, 2021
144a38d
Super-bounded types, least and greatest closure
eernstg Nov 12, 2021
80cef19
Assignability, generics
eernstg Nov 12, 2021
a5aa267
Extreme types
eernstg Nov 12, 2021
4c706bd
Extreme types, helper functions
eernstg Nov 15, 2021
29c41cd
Rebase
eernstg Nov 16, 2021
a70cae7
.call insertion on nullable type; clean up BlindDefineSymbol
eernstg Nov 16, 2021
53d080b
Rebase
eernstg Nov 16, 2021
d539aea
Main
eernstg Nov 16, 2021
1f120dc
Type Type
eernstg Nov 17, 2021
ed17e84
Type Type fixes
eernstg Nov 17, 2021
8032109
More typeType fixes
eernstg Nov 17, 2021
82338a3
Constant instances (in particular: about canonical instances)
eernstg Nov 18, 2021
358edf0
Corrected variable initialization specification ("has been stored" ra…
eernstg Nov 19, 2021
f30b8ce
Small adjustments to Variables
eernstg Nov 19, 2021
02f09c3
Rebase
eernstg Nov 26, 2021
61e41a3
Boolean conversion; type test; made true/false terminology consistent…
eernstg Nov 29, 2021
d6cf23d
Constant types; type variable elimination in constants
eernstg Nov 29, 2021
32de047
Conditional expression; operators && and ||; `if` statements; delete …
eernstg Nov 30, 2021
5983ae2
Integrate Null Promotion; put v==null rules into Type Promotion, and …
eernstg Dec 1, 2021
aa29b9b
Null shorting
eernstg Dec 1, 2021
8b283a9
Small fixes in section Null Shorting
eernstg Dec 1, 2021
d07437d
Revisiting all occurrences of \NULL/Null/null
eernstg Dec 2, 2021
d21c33d
Did much of Standard ... Bounds
eernstg Dec 3, 2021
92cc098
Standard bounds
eernstg Dec 7, 2021
3d0b266
Fixed the "SUB issues" section
eernstg Dec 8, 2021
755852e
Rebase
eernstg Dec 8, 2021
13c72de
Rebase
eernstg Dec 8, 2021
d5ae815
Rebase
eernstg Dec 8, 2021
4e7e071
Rebase
eernstg Dec 9, 2021
76d285a
Rebase
eernstg Dec 10, 2021
d2e5e57
Clarified and corrected Canonical Syntax
eernstg Dec 10, 2021
b0f1c7f
Fixed subsubsection --> subsection, 2*
eernstg Dec 10, 2021
791157d
Typos
eernstg Jan 5, 2022
7ff8644
Whitespace
eernstg Jan 6, 2022
c708d17
Interface type fixes
eernstg Jan 6, 2022
4c82d00
Sync with specify_null_safety_new_sections_dec21
eernstg Jan 7, 2022
825de7c
Mark a subtype rule as redundant, in a TODO comment
eernstg Jan 7, 2022
8df421c
Adjust no-loops-in-noSuchMethod example
eernstg Feb 7, 2022
c0f36d8
Adjust no-loops-in-noSuchMethod example
eernstg Feb 8, 2022
2e1e710
Corrected function type subtype rule (bounds); corrected "math" index…
eernstg May 3, 2022
3d1e76b
Adjust class building types
eernstg May 9, 2022
7ae0fc1
Adjust examples declaring non-nullable positional optional parameters…
eernstg Jul 26, 2022
d3a16a9
Add a TODO to introduce `Any`
eernstg Nov 2, 2022
e620f61
Correct example in section about super-bounded types
eernstg Nov 3, 2022
4405e2b
Correction based on https://github.com/dart-lang/language/issues/2679
eernstg Dec 2, 2022
cfc52d4
Specify erasure of intersection types for the semantics of await expr…
eernstg Dec 9, 2022
b19dc4c
Typo
eernstg Jan 20, 2023
022916b
Introduce \DynamicError, marking all dynamic errors just like compile…
eernstg Feb 2, 2023
f21de18
Changed the error margin markers to use red text
eernstg Feb 2, 2023
db0a8ac
Correct dynamic type of tear-off with covariant parameter
eernstg May 31, 2023
1508e4e
Clarified tear-offs of methods with covariant parameters
eernstg May 31, 2023
4bf89e6
Correct a typo about closurization
eernstg May 31, 2023
ea17e17
Correction: Add definition of normalizedType/topMergeType for member …
eernstg Jun 16, 2023
00391ca
Correction: Update dynamic type of covariant parameter to Object?
eernstg Jun 22, 2023
3cee2c7
Typo
eernstg Jun 29, 2023
41c4940
Add commentary to emphasize that `new`/`const` can be implicit, and `…
eernstg Jul 5, 2023
e9c2ef6
Add missing updates in section typeVoid
eernstg Jul 6, 2023
f7dbe69
Add missing error: default values must be type correct
eernstg Jul 13, 2023
028ab0e
Add a paragraph explaining that the given section is about both optio…
eernstg Jul 13, 2023
248780c
Post-rebase error correction
eernstg Jul 21, 2023
4648a3c
Correct usages of "final variable" and "constant variable"
eernstg Jul 21, 2023
e5950a1
Add missing declaration kind about getter/setter type error
eernstg Sep 11, 2023
b61f3a7
Remove obsolete reference to "mixin composition" from section Supercl…
eernstg Sep 29, 2023
02fc771
Add comment about default values of noSuchMethod forwarders being und…
eernstg Sep 29, 2023
18e9f26
Correct rule about the interface of T?
eernstg Jan 10, 2024
594c1b1
Correct rule about interfaces of bounded types
eernstg Jan 10, 2024
f25a150
Corrected many occurrences of "string" to "string literal"
eernstg Feb 22, 2024
c3b8f68
Update the "parameter name `_...`" error
eernstg Apr 30, 2024
98ebb69
Restore the index marker, define a command for it
eernstg Jun 17, 2024
09eed53
Corrected the huge rebase operation (removed TODO material)
eernstg Jun 17, 2024
4ba6e14
Fix obsolete ref
eernstg Aug 12, 2024
5cd1a44
Introduce <memberedDeclarationBody> and use it
eernstg Aug 12, 2024
a98a51d
Add change log entry
eernstg Aug 12, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
32 changes: 18 additions & 14 deletions specification/dart.sty
Original file line number Diff line number Diff line change
Expand Up @@ -124,11 +124,11 @@
\newenvironment{commentary}[1]{{\color{commentaryColor}\sf{#1}}}{}

% Auxiliary functions.
\newcommand{\flattenName}{\mbox{\it flatten}}
\newcommand{\flattenName}{\metavar{flatten}}
\newcommand{\flatten}[1]{\ensuremath{\flattenName({#1})}}
\newcommand{\futureOrBase}[1]{\ensuremath{\mbox{\it futureOrBase}({#1})}}
\newcommand{\overrides}[1]{\ensuremath{\mbox{\it overrides}({#1})}}
\newcommand{\inherited}[1]{\ensuremath{\mbox{\it inherited}({#1})}}
\newcommand{\futureOrBase}[1]{\ensuremath{\metavar{futureOrBase}({#1})}}
\newcommand{\overrides}[1]{\ensuremath{\metavar{overrides}({#1})}}
\newcommand{\inherited}[1]{\ensuremath{\metavar{inherited}({#1})}}

% Used as a mini-section marker, indicating visibly that a range of
% text (usually just a couple of paragraphs) are concerned with one
Expand Down Expand Up @@ -173,9 +173,12 @@
\newcommand{\id}{\metavar{id}}
\newcommand{\op}{\metavar{op}}

% Used in margin to indicate that a term is being defined here.
\newcommand{\IndexMarker}{\ensuremath{^\vartriangle}}

% Used for defining occurrence of phrase, with customized index entry.
\newcommand{\IndexCustom}[2]{%
\leavevmode\marginpar{\ensuremath{_{^\vartriangle}}}\emph{#1}\index{#2}}
\leavevmode\marginpar{\IndexMarker}\emph{#1}\index{#2}}

% Used for the defining occurrence of a local symbol.
\newcommand{\DefineSymbol}[1]{%
Expand All @@ -196,11 +199,15 @@

% Same appearance, but not adding an entry to the index.
\newcommand{\NoIndex}[1]{%
\leavevmode\marginpar{\ensuremath{_{^\vartriangle}}}\emph{#1}}
\leavevmode\marginpar{\IndexMarker}\emph{#1}}

% Mark a compile-time error in the margin.
\newcommand{\Error}[1]{%
\leavevmode\marginpar{\ensuremath{_{^\ominus}}}{#1}}
\leavevmode\marginpar{\ensuremath{\textcolor{red}{\ominus}}}{#1}}

% Mark a dynamic error in the margin.
\newcommand{\DynamicError}[1]{%
\leavevmode\marginpar{\textcolor{red}{\Lightning}}{#1}}

% Used to specify comma separated lists of similar symbols.
\newcommand{\List}[3]{\ensuremath{{#1}_{#2},\,\ldots,\ {#1}_{#3}}}
Expand Down Expand Up @@ -402,7 +409,7 @@

% Same as \FunctionTypeNamed except suitable for inline usage, hence omitting
% the spacer argument.
\newcommand{\RawFunctionTypeNamed}[8]{%
\newcommand{\RawFunctionTypeNamed}[9]{%
\RawFunctionType{#1}{#2}{#3}{#4}{%
\FunctionTypeNamedParameters{#5}{#6}{#7}{#8}{r}}}

Expand Down Expand Up @@ -466,17 +473,14 @@
\newcommand{\SubtypeStd}[2]{\Subtype{\Delta}{#1}{#2}}
% Subtype judgment where the environment is omitted (NE: "no environment").
\newcommand{\SubtypeNE}[2]{\ensuremath{{#1}\,<:\,{#2}}}
\newcommand{\MutualSubtype}[3]{\ensuremath{{#1}\vdash{#2}\,<:>\,{#3}}}
\newcommand{\MutualSubtypeStd}[2]{\MutualSubtype{\Delta}{#1}{#2}}
\newcommand{\MutualSubtypeNE}[2]{\ensuremath{{#1}\,<:>\,{#2}}}

% Judgment expressing that a supertype relation exists.
\newcommand{\Supertype}[3]{\ensuremath{{#1}\vdash{#2}\,:>\,{#3}}}
\newcommand{\SupertypeStd}[2]{\Supertype{\Delta}{#1}{#2}}

% Judgment expressing that an assignability relation exists.
\newcommand{\AssignableRelationSymbol}{\ensuremath{\Longleftrightarrow}}
\newcommand{\Assignable}[3]{%
\ensuremath{{#1}\vdash{#2}\,\AssignableRelationSymbol\,{#3}}}
\newcommand{\AssignableStd}[2]{\Assignable{\Gamma}{#1}{#2}}

% Semantic function delivering the superinterfaces of a class.
\newcommand{\Superinterfaces}[1]{\ensuremath{\metavar{Superinterfaces}({#1})}}
\newcommand{\Superinterface}[2]{{#1}\in\Superinterfaces{#2}}
Expand Down
Loading