implementation-imports

Same as implementation_imports in Dart lints

Path
lint/correctness/implementation-imports
Default
On (recommended)
Origin
Dart lints
Rule
243 of 512
recommended

Disallow importing another package's private src/ libraries.

The rule follows the analyzer's package-URI semantics: it runs only for a library under the enclosing package's lib/ directory, compares package identities from pubspec.yaml, and checks every default and configurable import URI. Export directives are not imports and are intentionally ignored.

Invalid

lib/bad_main.dartdart
import 'package:other/src/internal.dart';
import 'package:current_package/src/own.dart';
import 'package:public/api.dart'
    if (dart.library.io) 'package:io_impl/src/io.dart'
    if (dart.library.html) 'package:web_impl/public.dart';

export 'package:other/src/exported.dart';

void main() {}
lib/bad_main.dartDon't import implementation files from another package (`other`).
1import 'package:other/src/internal.dart';
lib/bad_main.dartDon't import implementation files from another package (`io_impl`).
3import 'package:public/api.dart'
4 if (dart.library.io) 'package:io_impl/src/io.dart'

Valid

example.dartdart
import 'package:foo/foo.dart';
import 'package:bar/widgets.dart';
import 'dart:async';
import 'src/local_helper.dart';
import 'package:baz/baz.dart';

void main() {}

Configure implementation-imports

Set its severity in falcon.json. See the configuration guide.

falcon.jsonjson
{
  "linter": {
    "rules": {
      "correctness": {
        "implementation-imports": "error"
      }
    }
  }
}

Or silence one occurrence with a suppression comment; the reason is required.

example.dartdart
// falcon-ignore lint/correctness/implementation-imports: <reason>