diff options
author | Jason Zaugg <jzaugg@gmail.com> | 2014-02-05 12:01:38 +0100 |
---|---|---|
committer | Jason Zaugg <jzaugg@gmail.com> | 2014-02-05 12:01:38 +0100 |
commit | a02fae978bbf3a4296e7ab0baffdbe0b80d6c126 (patch) | |
tree | ac565dc96524594a968273bb6060ede697ac007a /src/reflect | |
parent | 52379b66f96bf7e0ca22f7835ddb06c58d94d4a0 (diff) | |
download | scala-a02fae978bbf3a4296e7ab0baffdbe0b80d6c126.tar.gz scala-a02fae978bbf3a4296e7ab0baffdbe0b80d6c126.tar.bz2 scala-a02fae978bbf3a4296e7ab0baffdbe0b80d6c126.zip |
SI-8170 Posing outstanding questions as TODOs
We'll get to the bottom of this as soon as we get
one of those Round Tuits.
Diffstat (limited to 'src/reflect')
-rw-r--r-- | src/reflect/scala/reflect/internal/Types.scala | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/src/reflect/scala/reflect/internal/Types.scala b/src/reflect/scala/reflect/internal/Types.scala index 209d31c5af..6dac20459e 100644 --- a/src/reflect/scala/reflect/internal/Types.scala +++ b/src/reflect/scala/reflect/internal/Types.scala @@ -2001,6 +2001,22 @@ trait Types // // Now, we detect the PolyType before both the ASF *and* the substitution, and just operate // on the result type. + // + // TODO: Revisit this and explore the questions raised: + // + // AM: I like this better than the old code, but is there any way the tparams would need the ASF treatment as well? + // JZ: I think its largely irrelevant, as they are no longer referred to in the result type. + // In fact, you can get away with returning a type of kind * here and the sky doesn't fall: + // `case PolyType(`tparams`, result) => asSeenFromInstantiated(result)` + // But I thought it was better to retain the kind. + // AM: I've been experimenting with apply-type-args-then-ASF, but running into cycles. + // In general, it seems iffy the tparams can never occur in the result + // then we might as well represent the type as a no-arg typeref. + // AM: I've also been trying to track down uses of transform (pretty generic name for something that + // does not seem that widely applicable). + // It's kind of a helper for computing baseType (since it tries to propagate our type args to some + // other type, which has to be related to this type for that to make sense). + // tp match { case PolyType(`tparams`, result) => PolyType(tparams, asSeenFromInstantiated(result)) case _ => asSeenFromInstantiated(tp) |