I'm saying the same thing you are saying, but from a position of much
more ignorance. Three problems were raised in this thread:
value flags is not a member of c.universe.Symbol
value typeParams is not a member of c.universe.Type
value resolveOverloaded is not a member of c.universe.TermSymbol
To which Eugene replied:
1) resolveOverloaded is gone, because its implementation was
duplicating existing compiler code, and after some discussion we
discussed that its value doesn't overweight the technical debt we're
imposing on ourselves. Quite likely it will reappear in 2.10.1.
2) typeParams is gone, it's supposed to be replaced by pattern matching.
3) flags are gone as well. Since we introduced a comprehensive set of
isXXX methods, flags were deemed to be redundant in the API.
So far so good, but then Eugene followed up with:
1) Yep, just copy/paste. I've submitted a pull request that adds
weak_<:<:
https://github.com/scala/scala/pull/1178, and the rest
should be okay. Stuff like isByNameParamType and same for varargs will
need to be reimplemented, but that's two oneliners that use public
API: definitions.ByNameParamClass and definitions.RepeatedParamClass/
definitions.JavaRepeatedParamClass.
2) If you have a MethodSymbol, you can use its newly introduced
typeParams method.
3a) Use TypeSymbol.isAbstractType instead of hasFlag DEFERRED.
3b) Yeah flags needs some love, that's true. For now you could cast to
reflect.internal.Symbols#Symbol and use `flags` from there. I've also
created an issue in tracker:
https://issues.scala-lang.org/browse/SI-6267.
So, there was I fixing a code that relied on typeArguments, and I
decided to follow up with the above suggestion, and discovered that it
didn't really work. So I reported here, in this thread, that it
doesn't really work, for those that might stumble upon it in the
future.