|
1 |
| -package dotty.tools |
2 |
| -package dotc |
3 |
| -package core |
4 |
| - |
5 |
| -import Types._, Contexts._, Symbols._, Denotations._, SymDenotations._, StdNames._, Names._ |
6 |
| -import Flags._, Scopes._, Decorators._, NameOps._, util.Positions._ |
7 |
| -import pickling.UnPickler.ensureConstructor |
8 |
| -import scala.annotation.{ switch, meta } |
9 |
| -import scala.collection.{ mutable, immutable } |
10 |
| -import PartialFunction._ |
11 |
| -import collection.mutable |
12 |
| -import scala.reflect.api.{ Universe => ApiUniverse } |
13 |
| - |
14 |
| -object Definitions { |
15 |
| - val MaxFunctionArity, MaxTupleArity = 22 |
16 |
| -} |
| 1 | +package test |
17 | 2 |
|
18 | 3 | /** A class defining symbols and types of standard definitions */
|
19 | 4 | class Definitions {
|
20 | 5 |
|
21 |
| - /** The HigherKinded trait corresponding to symbols `boundSyms` (which are assumed |
22 |
| - * to be the type parameters of a higher-kided type). This is a class symbol that |
23 |
| - * would be generated by the following schema. |
24 |
| - * |
25 |
| - * class LambdaXYZ extends Object with P1 with ... with Pn { |
26 |
| - * type v_1 $hk$Arg0; ...; type v_N $hk$ArgN; |
27 |
| - * type Apply |
28 |
| - * } |
29 |
| - * |
30 |
| - * Here: |
31 |
| - * |
32 |
| - * - v_i are the variances of the bound symbols (i.e. +, -, or empty). |
33 |
| - * - XYZ is a string of length N with one letter for each variant of a bound symbol, |
34 |
| - * using `P` (positive variance), `N` (negative variance), `I` (invariant). |
35 |
| - * - for each positive or negative variance v_i there is a parent trait Pj which |
36 |
| - * is the same as LambdaXYZ except that it has `I` in i-th position. |
37 |
| - */ |
38 |
| - def lambdaTrait(vcs: List[Int]): ClassSymbol = { |
| 6 | + trait LazyType { def complete(): Unit } |
39 | 7 |
|
| 8 | + def f(vcs: List[Int]): Unit = { |
40 | 9 | val completer = new LazyType {
|
41 |
| - def complete(denot: SymDenotation)(implicit ctx: Context): Unit = { |
42 |
| -// val cls = denot.asClass.classSymbol |
43 |
| -// val paramDecls = newScope |
44 |
| -// for (i <- 0 until vcs.length) |
45 |
| -// newTypeParam(cls, tpnme.lambdaArgName(i), varianceFlags(vcs(i)), paramDecls) |
46 |
| -// newTypeField(cls, tpnme.Apply, Covariant, paramDecls) |
47 |
| - val parentTraitRefs = |
48 |
| - for (i <- 0 until vcs.length if vcs(i) != 0) |
49 |
| - yield lambdaTrait(vcs.updated(i, 0)).typeRef |
50 |
| -// denot.info = ClassInfo( |
51 |
| -// ScalaPackageClass.thisType, cls, ObjectClass.typeRef :: parentTraitRefs.toList, paramDecls) |
52 |
| - } |
| 10 | + def complete(): Unit = |
| 11 | + for (i <- 0 until vcs.length if vcs(i) != 0) |
| 12 | + f(vcs.updated(i, 0)) |
53 | 13 | }
|
54 |
| - |
55 |
| -// val traitName = tpnme.lambdaTraitName(vcs) |
56 |
| - |
57 |
| -// def createTrait = ??? |
58 |
| - |
59 |
| - ??? |
60 |
| - |
61 | 14 | }
|
62 | 15 | }
|
0 commit comments