avoid-casting-to-extension-type
preset: recommended
Warns when an expression is casted to an extension type.
Casting to an extension type can throw at runtime, whereas instantiating it is safe and you'll get a hint about the representation field type mismatch.
Example
❌ Bad:
void fn(String input) {
// LINT: Avoid casting to extension type. Try instantiating it instead.
final value1 = input as ET;
// LINT: Avoid casting to extension type. Try instantiating it instead.
final value2 = input as ET1;
}
extension type const ET(String s) {}
extension type const ET1(int v) {}
✅ Good:
void fn(String input) {
final value = ET(input); // Correct, instantiated instead
}
extension type const ET(String s) {}