@@ -535,6 +535,9 @@ The community has imagined a variety of possible solutions, synthesized here.
535
535
Each solution is identified with a ` Number ` so they can be referenced in the
536
536
rest of the document. New solutions must be added to the end of the list.
537
537
538
+ Some of the solutions have been ruled out and are kept here for historical
539
+ reasons. Those solutions are folded in a ` <details> ` tag.
540
+
538
541
Semantic nullability is only relevant to output positions, so when comparing
539
542
syntax we will look for changes versus the current syntax used to represent
540
543
these types:
@@ -633,6 +636,10 @@ have been discussed the choice of symbol comes down mostly to aesthetics.
633
636
634
637
## 💡 2. "Strict Semantic Nullability"
635
638
639
+ <details >
640
+
641
+ <summary >Rejected - click for details </summary >
642
+
636
643
[solution -2]: #-2-strict-semantic-nullability
637
644
638
645
**Champion **: @leebyron
@@ -694,9 +701,14 @@ symbol) to indicate that a position may semantically be null.
694
701
- [R ][criteria -r ]
695
702
- ❔
696
703
704
+ </details >
697
705
698
706
## 💡 3. New "Semantic Non-Null" type, usurping `!` syntax
699
707
708
+ <details >
709
+
710
+ <summary >Rejected - click for details </summary >
711
+
700
712
[solution -3]: #-3-new-semantic-non-null-type-usurping--syntax
701
713
702
714
**Champion **: @benjie
@@ -790,9 +802,16 @@ day-to-day work.
790
802
- [R][criteria-r]
791
803
- ✅ Syntax used for inputs is unchanged with or without the directive.
792
804
805
+ </details>
793
806
794
807
## 💡 4. New "Semantic Non-Null" type, with `?` used for nullable types
795
808
809
+ [solution-4]: #-4-new-semantic-non-null-type-with--used-for-nullable-types
810
+
811
+ <details>
812
+
813
+ <summary>Rejected - click for details</summary>
814
+
796
815
**Champion**: none (put your name here to become the champion!)
797
816
798
817
This proposal builds on solution 3, but with a syntactic shuffle such that the
@@ -853,9 +872,15 @@ Syntax only changes when `@semanticNullability` directive is present:
853
872
- [R][criteria-r]
854
873
- 🚫 Input positions have changed `Int` ⇒ `Int?`, `Int!` ⇒ `Int`
855
874
875
+ </details>
876
+
856
877
857
878
## 💡 5. Use non-null in semantically non-nullable places and encourage disabling error propagation
858
879
880
+ <details>
881
+
882
+ <summary>Rejected - click for details</summary>
883
+
859
884
[solution-5]: #-5-use-non-null-in-semantically-non-nullable-places-and-encourage-disabling-error-propagation
860
885
861
886
**Champion**: @martinbonnin
@@ -909,6 +934,8 @@ This proposal relies on the ability of clients to opt out of error propagation;
909
934
- [R][criteria-r]
910
935
- ✅ Same syntax.
911
936
937
+ </details>
938
+
912
939
## 💡 6. `@semanticNonNull` directive
913
940
914
941
[solution-6]: #-6-semanticnonnull-directive
0 commit comments