diff --git a/wire-compiler/api/wire-compiler.api b/wire-compiler/api/wire-compiler.api index 3c4adee9a2..fa8a348576 100644 --- a/wire-compiler/api/wire-compiler.api +++ b/wire-compiler/api/wire-compiler.api @@ -8,7 +8,7 @@ public final class com/squareup/wire/DryRunFileSystem : okio/ForwardingFileSyste public final class com/squareup/wire/WireCompiler { public static final field CODE_GENERATED_BY_WIRE Ljava/lang/String; public static final field Companion Lcom/squareup/wire/WireCompiler$Companion; - public synthetic fun (Lokio/FileSystem;Lcom/squareup/wire/WireLogger;Ljava/util/List;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/util/List;Ljava/util/List;Ljava/util/List;Ljava/util/Map;ZZZZZZZZIZZZLcom/squareup/wire/kotlin/RpcCallStyle;Lcom/squareup/wire/kotlin/RpcRole;ZLjava/lang/String;ZZZZLcom/squareup/wire/kotlin/EnumMode;Ljava/util/List;Ljava/util/Map;Ljava/util/List;IILkotlin/jvm/internal/DefaultConstructorMarker;)V + public synthetic fun (Lokio/FileSystem;Lcom/squareup/wire/WireLogger;Ljava/util/List;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/util/List;Ljava/util/List;Ljava/util/List;ZLjava/util/Map;ZZZZZZZZIZZZLcom/squareup/wire/kotlin/RpcCallStyle;Lcom/squareup/wire/kotlin/RpcRole;ZLjava/lang/String;ZZZZLcom/squareup/wire/kotlin/EnumMode;Ljava/util/List;Ljava/util/Map;Ljava/util/List;IILkotlin/jvm/internal/DefaultConstructorMarker;)V public final fun compile ()V public static final fun forArgs (Ljava/nio/file/FileSystem;Lcom/squareup/wire/WireLogger;[Ljava/lang/String;)Lcom/squareup/wire/WireCompiler; public static final fun forArgs (Lokio/FileSystem;Lcom/squareup/wire/WireLogger;[Ljava/lang/String;)Lcom/squareup/wire/WireCompiler; @@ -44,6 +44,7 @@ public final class com/squareup/wire/WireCompiler { public final fun getOpaqueTypes ()Ljava/util/List; public final fun getPermitPackageCycles ()Z public final fun getProtoPaths ()Ljava/util/List; + public final fun getRejectUnusedRootsOrPrunes ()Z public final fun getSchemaHandlerFactoryClass ()Ljava/lang/String; public final fun getSourceFileNames ()Ljava/util/List; public final fun getSwiftExclusive ()Z diff --git a/wire-compiler/src/main/java/com/squareup/wire/WireCompiler.kt b/wire-compiler/src/main/java/com/squareup/wire/WireCompiler.kt index 2b130afba0..fa55747a77 100644 --- a/wire-compiler/src/main/java/com/squareup/wire/WireCompiler.kt +++ b/wire-compiler/src/main/java/com/squareup/wire/WireCompiler.kt @@ -128,6 +128,7 @@ class WireCompiler internal constructor( val sourceFileNames: List, val treeShakingRoots: List, val treeShakingRubbish: List, + val rejectUnusedRootsOrPrunes: Boolean, val modules: Map, val emitAndroid: Boolean, val emitAndroidAnnotations: Boolean, @@ -230,6 +231,7 @@ class WireCompiler internal constructor( permitPackageCycles = permitPackageCycles, loadExhaustively = loadExhaustively, eventListeners = eventListenerFactoryClasses.map { newEventListenerFactory(it).create() }, + rejectUnusedRootsOrPrunes = rejectUnusedRootsOrPrunes, opaqueTypes = opaqueTypes, ) @@ -301,6 +303,7 @@ class WireCompiler internal constructor( private const val KOTLIN_ENUM_MODE = "--kotlin_enum_mode=" private const val CUSTOM_OPTION_FLAG = "--custom_option=" private const val OPAQUE_TYPES_FLAG = "--opaque_types=" + private const val IGNORE_UNUSED_ROOTS_AND_PRUNES = "--ignore_unused_roots_and_prunes" private const val KOTLIN_EXPLICIT_STREAMING_CALLS = "--kotlin_explicit_streaming_calls" @Throws(IOException::class) @@ -369,6 +372,7 @@ class WireCompiler internal constructor( var kotlinExplicitStreamingCalls = false var dryRun = false val customOptions = mutableMapOf() + var rejectUnusedRootsOrPrunes = true val opaqueTypes = mutableListOf() for (arg in args) { @@ -492,6 +496,7 @@ class WireCompiler internal constructor( arg == JAVA_INTEROP -> javaInterop = true arg == EMIT_PROTO_READER_32 -> emitProtoReader32 = true arg == KOTLIN_EXPLICIT_STREAMING_CALLS -> kotlinExplicitStreamingCalls = true + arg == IGNORE_UNUSED_ROOTS_AND_PRUNES -> rejectUnusedRootsOrPrunes = false arg.startsWith("--") -> throw IllegalArgumentException("Unknown argument '$arg'.") else -> sourceFileNames.add(arg) } @@ -547,6 +552,7 @@ class WireCompiler internal constructor( eventListenerFactoryClasses = eventListenerFactoryClasses, customOptions = customOptions, opaqueTypes = opaqueTypes, + rejectUnusedRootsOrPrunes = rejectUnusedRootsOrPrunes, kotlinExplicitStreamingCalls = kotlinExplicitStreamingCalls, ) } diff --git a/wire-compiler/src/test/java/com/squareup/wire/CommandLineOptionsTest.kt b/wire-compiler/src/test/java/com/squareup/wire/CommandLineOptionsTest.kt index e4d62a0c81..8f4c44fbad 100644 --- a/wire-compiler/src/test/java/com/squareup/wire/CommandLineOptionsTest.kt +++ b/wire-compiler/src/test/java/com/squareup/wire/CommandLineOptionsTest.kt @@ -21,6 +21,7 @@ import assertk.assertions.containsOnly import assertk.assertions.hasMessage import assertk.assertions.isEmpty import assertk.assertions.isEqualTo +import assertk.assertions.isFalse import com.squareup.wire.kotlin.EnumMode import com.squareup.wire.schema.WireRun import java.io.File @@ -112,6 +113,9 @@ class CommandLineOptionsTest { compiler = parseArgs("--java_out=.", "--includes=com.example.Foo,com.example.Bar") assertThat(compiler.treeShakingRoots).containsExactly("com.example.Foo", "com.example.Bar") + + compiler = parseArgs("--java_out=.", "--ignore_unused_roots_and_prunes") + assertThat(compiler.rejectUnusedRootsOrPrunes).isFalse() } @Test