Improve the logic for checking setter parameter types against getter return types.

We translate the getter return types into the type context of the builder. For example, if the @AutoValue class is Foo<T> then its builder must be Foo.Builder<T>. A getter like `abstract List<T> getList()` is compatible with a setter like `Builder setList(List<T> list)`, even though the <T> parameter in each case is different. So we convert `List<T-{Foo}> getList()` into `List<T{Foo.Builder}> getList()` before comparing types.

RELNOTES=Better checking of types in setters against types in getters.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=238100041
9 files changed
tree: f1e8cac15fa71ccf9ff9f5166ca8754f4a8a1b23
  1. common/
  2. factory/
  3. service/
  4. util/
  5. value/
  6. .gitignore
  7. .travis.yml
  8. build-pom.xml
  9. CONTRIBUTING.md
  10. LICENSE.txt
  11. pom.xml
  12. README.md
README.md

Auto

A collection of source code generators for Java.

Auto‽

Java is full of code that is mechanical, repetitive, typically untested and sometimes the source of subtle bugs. Sounds like a job for robots!

The Auto subprojects are a collection of code generators that automate those types of tasks. They create the code you would have written, but without the bugs.

Save time. Save code. Save sanity.

Subprojects

License

Copyright 2013 Google, Inc.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

   http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.