JasonB
04/18/2023, 7:57 PMJasonB
04/18/2023, 7:58 PMwhen
on an enum, adding an else
clause should trigger a warningJasonB
04/18/2023, 7:58 PMChris Lee
04/18/2023, 8:02 PMw: file:///Users/chrislee/IdeaProjects/clario/clario-app/modules/frontend/phpcgi/src/main/kotlin/clario/fe/phpcgi/FastCgiDecoder.kt:166:21 'when' is exhaustive so 'else' is redundant here
Chris Lee
04/18/2023, 8:03 PMJasonB
04/18/2023, 8:03 PMwhen (vehicle.fuelType) {
FuelType.DIESEL -> CaFuelTypeEnum.DIESEL
FuelType.ELECTRIC -> CaFuelTypeEnum.ELECTRIC
FuelType.FLEX -> CaFuelTypeEnum.FLEX_FUEL
FuelType.GAS -> CaFuelTypeEnum.GASOLINE
FuelType.FULL_HYBRID -> CaFuelTypeEnum.HYBRID_GASOLINE_ELECTRIC
FuelType.PLUG_IN_HYBRID -> CaFuelTypeEnum.HYBRID_GASOLINE_ELECTRIC
FuelType.CNG -> CaFuelTypeEnum.NATURAL_GAS_POWERED
FuelType.LPG -> CaFuelTypeEnum.PROPANE
FuelType.HYDROGEN -> CaFuelTypeEnum.HYDROGEN_FUEL_CELL
else -> CaFuelTypeEnum.BUTANE
}
JasonB
04/18/2023, 8:04 PMJasonB
04/18/2023, 8:04 PMChris Lee
04/18/2023, 8:05 PMpublic enum class FuelType {
DIESEL,
ELECTRIC
}
public class Test {
public fun foo(fuelType : FuelType) {
when(fuelType) {
FuelType.DIESEL -> TODO()
FuelType.ELECTRIC -> TODO()
else -> {}
}
}
}
Chris Lee
04/18/2023, 8:06 PMpublic enum class FuelType {
DIESEL,
ELECTRIC
}
public class Test {
public fun foo(fuelType : FuelType?) {
when(fuelType) {
FuelType.DIESEL -> TODO()
FuelType.ELECTRIC -> TODO()
else -> {}
}
}
}
Adam S
04/18/2023, 8:06 PMvehicle.fuelType
come from Java? Is it nullable? What happens if you try when (vehicle.fuelType!!) {
, or adding a null -> {}
branch?Chris Lee
04/18/2023, 8:07 PMpublic enum class FuelType {
DIESEL,
ELECTRIC
}
public class Test {
public fun foo(fuelType : FuelType?) {
when(fuelType) {
FuelType.DIESEL -> TODO()
FuelType.ELECTRIC -> TODO()
null -> {}
else -> {}
}
}
}
JasonB
04/18/2023, 8:07 PMJasonB
04/18/2023, 8:07 PMChris Lee
04/18/2023, 8:08 PMJasonB
04/18/2023, 8:08 PMJasonB
04/18/2023, 8:08 PMwhen
is exhaustiveChris Lee
04/18/2023, 8:09 PMChris Lee
04/18/2023, 8:10 PMHYBRID
is not in the when:
public enum class FuelType {
DIESEL,
ELECTRIC,
HYBRID
}
public class Test {
public fun foo(fuelType : FuelType) {
when(fuelType) {
FuelType.DIESEL -> TODO()
FuelType.ELECTRIC -> TODO()
else -> {}
}
}
}
JasonB
04/18/2023, 8:11 PMJasonB
04/18/2023, 8:11 PMwhen (vehicle.fuelType) {
FuelType.CNG -> TODO()
FuelType.DIESEL -> TODO()
FuelType.ELECTRIC -> TODO()
FuelType.FLEX -> TODO()
FuelType.FULL_HYBRID -> TODO()
FuelType.GAS -> TODO()
FuelType.HYDROGEN -> TODO()
FuelType.LPG -> TODO()
FuelType.PLUG_IN_HYBRID -> TODO()
else -> {}
}
Adam S
04/18/2023, 8:12 PMChris Lee
04/18/2023, 8:14 PMJasonB
04/18/2023, 8:15 PMdata class Vehicle(
val vehicleListingId: Int,
val sellingPriceInCents: Int,
val vin: String,
val year: Int,
val make: String,
val model: String,
val bodyType: BodyType,
val condition: Condition,
val mileage: Int,
val priceInCents: Int,
val fuelType: FuelType,
val modelCode: String,
val dealerId: Int,
val curbWeight: Int?,
val msrpInCents: Int?,
val baseMsrpInCents: Int?,
val accessoryPriceInCents: Int?,
) {
fun getCurbWeightOrDefault(): Int = curbWeight ?: 3000
enum class BodyType {
CHASSIS,
CONVERTIBLE,
COUPE,
HATCHBACK,
MINIVAN,
PICKUP,
SEDAN,
SUV,
VAN,
WAGON,
}
enum class FuelType {
CNG,
DIESEL,
ELECTRIC,
FLEX,
FULL_HYBRID,
GAS,
HYDROGEN,
LPG,
PLUG_IN_HYBRID,
}
enum class Condition {
NEW,
USED,
}
}
Chris Lee
04/18/2023, 8:17 PMChris Lee
04/18/2023, 8:20 PMAdam S
04/18/2023, 8:20 PM@Suppress(...)
or @file:Suppress(...)
anywhere?Chris Lee
04/18/2023, 8:21 PM@Suppress("REDUNDANT_ELSE_IN_WHEN")
JasonB
04/18/2023, 8:22 PMChris Lee
04/18/2023, 8:23 PMJasonB
04/18/2023, 8:29 PMJasonB
04/18/2023, 8:29 PMChris Lee
04/18/2023, 8:29 PMChris Lee
04/18/2023, 8:31 PMpublic class Test {
public fun foo(fuelType : Vehicle.FuelType) {
when(fuelType) {
Vehicle.FuelType.CNG -> TODO()
Vehicle.FuelType.DIESEL -> TODO()
Vehicle.FuelType.ELECTRIC -> TODO()
Vehicle.FuelType.FLEX -> TODO()
Vehicle.FuelType.FULL_HYBRID -> TODO()
Vehicle.FuelType.GAS -> TODO()
Vehicle.FuelType.HYDROGEN -> TODO()
Vehicle.FuelType.LPG -> TODO()
Vehicle.FuelType.PLUG_IN_HYBRID -> TODO()
else -> {}
}
}
}
warns of redundant else when in same module, but not if in different module.Chris Lee
04/18/2023, 8:31 PMJasonB
04/18/2023, 8:32 PMChris Lee
04/18/2023, 8:33 PMChris Lee
04/18/2023, 8:33 PMJasonB
04/18/2023, 8:34 PMJasonB
04/18/2023, 8:36 PMJasonB
04/18/2023, 8:39 PMJasonB
04/18/2023, 8:39 PMNino
04/18/2023, 8:40 PMChris Lee
04/18/2023, 8:40 PMelse -> error("WTF")
Chris Lee
04/18/2023, 8:42 PMDavid Kubecka
04/19/2023, 8:25 AM