diff options
author | ronshapiro <ronshapiro@google.com> | 2016-08-05 07:45:51 -0700 |
---|---|---|
committer | Éamonn McManus <eamonn@mcmanus.net> | 2016-08-29 17:19:45 -0700 |
commit | fe75dbf4d6523ddd3e50e6318096875d36c47959 (patch) | |
tree | dd7e7a759f449d3a4fe7e221777f59c7a9abfc57 /factory/src/test | |
parent | 4a052a8b9cbfbaa3407f46bb22a8b2b38c2c3a6d (diff) | |
download | auto-fe75dbf4d6523ddd3e50e6318096875d36c47959.tar.gz |
Disambiguate provider field's names in generated factories
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=129441115
Diffstat (limited to 'factory/src/test')
3 files changed, 111 insertions, 0 deletions
diff --git a/factory/src/test/java/com/google/auto/factory/processor/AutoFactoryProcessorTest.java b/factory/src/test/java/com/google/auto/factory/processor/AutoFactoryProcessorTest.java index 9cf80b52..67302e97 100644 --- a/factory/src/test/java/com/google/auto/factory/processor/AutoFactoryProcessorTest.java +++ b/factory/src/test/java/com/google/auto/factory/processor/AutoFactoryProcessorTest.java @@ -24,6 +24,7 @@ import org.junit.runners.JUnit4; import static com.google.common.truth.Truth.assertAbout; import static com.google.testing.compile.JavaSourceSubjectFactory.javaSource; +import static com.google.testing.compile.JavaSourcesSubject.assertThat; import static com.google.testing.compile.JavaSourcesSubjectFactory.javaSources; /** @@ -375,4 +376,15 @@ public class AutoFactoryProcessorTest { .and().generatesSources( JavaFileObjects.forResource("expected/ProviderArgumentToCreateMethodFactory.java")); } + + @Test public void multipleFactoriesConflictingParameterNames() { + assertThat( + JavaFileObjects.forResource("good/MultipleFactoriesConflictingParameterNames.java"), + JavaFileObjects.forResource("support/AQualifier.java")) + .processedWith(new AutoFactoryProcessor()) + .compilesWithoutError() + .and().generatesSources( + JavaFileObjects.forResource( + "expected/MultipleFactoriesConflictingParameterNamesFactory.java")); + } } diff --git a/factory/src/test/resources/expected/MultipleFactoriesConflictingParameterNamesFactory.java b/factory/src/test/resources/expected/MultipleFactoriesConflictingParameterNamesFactory.java new file mode 100644 index 00000000..be436523 --- /dev/null +++ b/factory/src/test/resources/expected/MultipleFactoriesConflictingParameterNamesFactory.java @@ -0,0 +1,61 @@ +/* + * Copyright (C) 2016 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. + */ +package tests; + +import com.google.auto.factory.internal.Preconditions; +import javax.annotation.Generated; +import javax.inject.Inject; +import javax.inject.Provider; + +@Generated( + value = "com.google.auto.factory.processor.AutoFactoryProcessor", + comments = "https://github.com/google/auto/tree/master/factory" +) +final class MultipleFactoriesConflictingParameterNamesFactory { + + private final Provider<String> stringProvider; + private final Provider<Object> java_lang_ObjectProvider; + private final Provider<String> stringProvider2; + private final Provider<Object> _tests_AQualifier_java_lang_ObjectProvider; + + @Inject + MultipleFactoriesConflictingParameterNamesFactory( + Provider<String> stringProvider, + Provider<Object> java_lang_ObjectProvider, + @AQualifier Provider<String> stringProvider2, + @AQualifier Provider<Object> _tests_AQualifier_java_lang_ObjectProvider) { + this.stringProvider = Preconditions.checkNotNull(stringProvider, 1); + this.java_lang_ObjectProvider = Preconditions.checkNotNull(java_lang_ObjectProvider, 2); + this.stringProvider2 = Preconditions.checkNotNull(stringProvider2, 3); + this._tests_AQualifier_java_lang_ObjectProvider = + Preconditions.checkNotNull(_tests_AQualifier_java_lang_ObjectProvider, 4); + } + + MultipleFactoriesConflictingParameterNames create(Object unused) { + return new MultipleFactoriesConflictingParameterNames( + Preconditions.checkNotNull(stringProvider.get(), 1), + Preconditions.checkNotNull(java_lang_ObjectProvider.get(), 2), + java_lang_ObjectProvider, + Preconditions.checkNotNull(unused, 4)); + } + + MultipleFactoriesConflictingParameterNames create() { + return new MultipleFactoriesConflictingParameterNames( + Preconditions.checkNotNull(stringProvider2.get(), 1), + Preconditions.checkNotNull(_tests_AQualifier_java_lang_ObjectProvider.get(), 2), + _tests_AQualifier_java_lang_ObjectProvider); + } +} diff --git a/factory/src/test/resources/good/MultipleFactoriesConflictingParameterNames.java b/factory/src/test/resources/good/MultipleFactoriesConflictingParameterNames.java new file mode 100644 index 00000000..47e6fa54 --- /dev/null +++ b/factory/src/test/resources/good/MultipleFactoriesConflictingParameterNames.java @@ -0,0 +1,38 @@ +/* + * Copyright (C) 2016 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. + */ +package tests; + +import com.google.auto.factory.AutoFactory; +import com.google.auto.factory.Provided; +import javax.inject.Provider; + +class MultipleFactoriesConflictingParameterNames { + + @AutoFactory + MultipleFactoriesConflictingParameterNames( + @Provided String string, + @Provided Object duplicatedKey_nameDoesntMatter, + @Provided Provider<Object> duplicatedKeyProvider_nameDoesntMatter, + // used to disambiguate with the second constructor since qualifiers aren't part of the type + // system + Object unused) {} + + @AutoFactory + MultipleFactoriesConflictingParameterNames( + @Provided @AQualifier String string, + @Provided @AQualifier Object qualifiedDuplicatedKey_nameDoesntMatter, + @Provided @AQualifier Provider<Object> qualifiedDuplicatedKeyProvider_nameDoesntMatter) {} +} |