File tree Expand file tree Collapse file tree 1 file changed +2
-7
lines changed
compiler/src/dotty/tools/dotc/core Expand file tree Collapse file tree 1 file changed +2
-7
lines changed Original file line number Diff line number Diff line change @@ -111,11 +111,7 @@ class CheckRealizable(implicit ctx: Context) {
111
111
/** `Realizable` if `tp` has good bounds, a `HasProblem...` instance
112
112
* pointing to a bad bounds member otherwise. "Has good bounds" means:
113
113
*
114
- * - all non-synthetic type members have good bounds.
115
- * Synthetic members are unchecked, for two reasons:
116
- * - synthetic opaque aliases do have conflicting bounds, but this is OK
117
- * - we should not force synthesized Shape types because that might
118
- * query the `children` annotation too early.
114
+ * - all type members have good bounds (except for opaque helpers)
119
115
* - all refinements of the underlying type have good bounds (except for opaque companions)
120
116
* - all base types are class types, and if their arguments are wildcards
121
117
* they have good bounds.
@@ -133,8 +129,7 @@ class CheckRealizable(implicit ctx: Context) {
133
129
val memberProblems =
134
130
for {
135
131
mbr <- tp.nonClassTypeMembers
136
- if ! mbr.symbol.is(Synthetic )
137
- if ! (mbr.info.loBound <:< mbr.info.hiBound)
132
+ if ! (mbr.info.loBound <:< mbr.info.hiBound) && ! mbr.symbol.isOpaqueHelper
138
133
}
139
134
yield new HasProblemBounds (mbr.name, mbr.info)
140
135
You can’t perform that action at this time.
0 commit comments