aboutsummaryrefslogtreecommitdiff
path: root/compiler/src/dotty/tools/dotc/typer/Inliner.scala
Commit message (Collapse)AuthorAgeFilesLines
* Make outer select names semanticMartin Odersky2017-04-111-6/+3
|
* Rename NameExtractor -> NameKindMartin Odersky2017-04-111-1/+1
|
* Make freshName semanticMartin Odersky2017-04-111-2/+2
|
* Eliminate LambdaAbstractMartin Odersky2017-04-061-1/+2
| | | | Use fromParams instead.
* Further refactoringsMartin Odersky2017-04-061-1/+1
| | | | | - Use TypeLambda instead of PolyType. - Further harmonize factory operations
* replace derived{Method,Poly}Type with derivedLambdaTypeMartin Odersky2017-04-061-1/+1
|
* Rename PolyParam --> TypeParamRefMartin Odersky2017-04-061-1/+1
|
* Harmonize paramTypes and paramBoundsMartin Odersky2017-04-061-2/+2
| | | | | | MethodTypes have paramTypes whereas PolyTypes have paramBounds. We now harmonize by alling both paramInfos, and parameterizing types that will become common to both.
* Fix position of errors in Inliner TreeTypeMapGuillaume Martres2017-03-161-3/+4
|
* Merge pull request #2013 from dotty-staging/fix-#2006Nicolas Stucki2017-02-211-4/+7
|\ | | | | Don't inline when errors are detected
| * Don't inline when errors are detectedMartin Odersky2017-02-211-4/+7
| | | | | | | | | | | | | | | | | | Inlining is only well-defined if the body to inline does not have any errors. We therefore check for errors before we perform any transformation of trees related to inlining. The error check is global, i.e. we stop on any error not just on errors in the code to be inlined. This is a safe approximation, of course.
* | Harden outer proxy computation of inlined codeMartin Odersky2017-02-191-10/+10
| | | | | | | | | | | | | | | | | | | | | | It turns out that we simply cannot do reliable outer path computation that fills in the right hand sides of this-proxies from the types of these proxies. As-seen-from logic can mangle the types of proxies enough to scramble the necessary information. What we now do instead is simply count: We record the number of outer accesses to an outer this in inlineable code, and do the same number of outer accesses when computing the proxy.
* | Fix sorting of accessed this-proxiesMartin Odersky2017-02-191-1/+6
|/ | | | | | | They are sorted according to the nesting depth of the classes they represent. This is no necessarily the same as the nesting level of the symbols of the proxy classes. i1990a.scala shows an example where the two differ.
* Fix #1569: Fix logic for by-name parameters of inline methodsMartin Odersky2017-02-021-1/+1
| | | | | As #1569 shows, by-name parameters should be treated in the same way as by-value parameters. If the expression is not pure, install a binding.
* Drop explicit types for local implicit valsMartin Odersky2016-12-121-1/+1
| | | | | Drop explicit types for local implicit vals of type Context and Position. Exercises the functionality and shortens the code.
* Move compiler and compiler tests to compiler dirFelix Mulder2016-11-221-0/+539