diff --git a/pkg/analyzer/lib/src/context/builder.dart b/pkg/analyzer/lib/src/context/builder.dart
index 960c862..351695b 100644
--- a/pkg/analyzer/lib/src/context/builder.dart
+++ b/pkg/analyzer/lib/src/context/builder.dart
@@ -483,11 +483,6 @@
       if (builderOptions.argResults != null) {
         applyAnalysisOptionFlags(options, builderOptions.argResults,
             verbosePrint: verbosePrint);
-        // If lints turned on but none specified, then enable default lints
-        if (options.lint && options.lintRules.isEmpty) {
-          options.lintRules = Registry.ruleRegistry.defaultRules;
-          verbose('Using default lint rules');
-        }
       }
     } else {
       verbose('Using default analysis options');
diff --git a/pkg/analyzer/lib/src/lint/registry.dart b/pkg/analyzer/lib/src/lint/registry.dart
index 4e02ac7..e72f804 100644
--- a/pkg/analyzer/lib/src/lint/registry.dart
+++ b/pkg/analyzer/lib/src/lint/registry.dart
@@ -21,16 +21,6 @@
    */
   Map<String, LintRule> _ruleMap = <String, LintRule>{};
 
-  /**
-   * A list of the default lint rules.
-   */
-  List<LintRule> _defaultRules = <LintRule>[];
-
-  /**
-   * Return a list of the default lint rules.
-   */
-  List<LintRule> get defaultRules => _defaultRules;
-
   @override
   Iterator<LintRule> get iterator => _ruleMap.values.iterator;
 
@@ -69,12 +59,9 @@
     _ruleMap[rule.name] = rule;
   }
 
-  /**
-   * Add the given lint [rule] to this registry and mark it as being a default
-   * lint (one that will be run if lints are requested but no rules are enabled.
-   */
+  // todo (pq): remove once linter-0.1.79 is in DEPS.
+  @deprecated
   void registerDefault(LintRule rule) {
     register(rule);
-    _defaultRules.add(rule);
   }
 }
diff --git a/pkg/analyzer/test/src/context/builder_test.dart b/pkg/analyzer/test/src/context/builder_test.dart
index 2985e31..5c6cd3c 100644
--- a/pkg/analyzer/test/src/context/builder_test.dart
+++ b/pkg/analyzer/test/src/context/builder_test.dart
@@ -111,26 +111,6 @@
     fail('Incomplete test');
   }
 
-  void test_cmdline_lint_default() {
-    _defineMockLintRules();
-    ArgParser argParser = new ArgParser();
-    defineAnalysisArguments(argParser);
-    ArgResults argResults = argParser.parse(['--$lintsFlag']);
-    var builder = new ContextBuilder(resourceProvider, sdkManager, contentCache,
-        options: createContextBuilderOptions(argResults));
-
-    AnalysisOptionsImpl expected = new AnalysisOptionsImpl();
-    expected.lint = true;
-    expected.lintRules = Registry.ruleRegistry.defaultRules;
-
-    String path = convertPath('/some/directory/path');
-    String filePath = join(path, AnalysisEngine.ANALYSIS_OPTIONS_YAML_FILE);
-    newFile(filePath);
-
-    AnalysisOptions options = builder.getAnalysisOptions(path);
-    _expectEqualOptions(options, expected);
-  }
-
   void test_cmdline_lint_defined() {
     _defineMockLintRules();
     ArgParser argParser = new ArgParser();
@@ -941,9 +921,9 @@
 
   _defineMockLintRules() {
     _mockLintRule = new _MockLintRule('mock_lint_rule');
-    Registry.ruleRegistry.registerDefault(_mockLintRule);
+    Registry.ruleRegistry.register(_mockLintRule);
     _mockLintRule2 = new _MockLintRule('mock_lint_rule2');
-    Registry.ruleRegistry.registerDefault(_mockLintRule2);
+    Registry.ruleRegistry.register(_mockLintRule2);
     _mockLintRule3 = new _MockLintRule('mock_lint_rule3');
     Registry.ruleRegistry.register(_mockLintRule3);
     _mockPublicMemberApiDocs = new _MockLintRule('public_member_api_docs');
