diff --git a/pkg/analysis_server/lib/src/services/correction/dart/add_type_annotation.dart b/pkg/analysis_server/lib/src/services/correction/dart/add_type_annotation.dart
index 21b63ad..0ff5f79 100644
--- a/pkg/analysis_server/lib/src/services/correction/dart/add_type_annotation.dart
+++ b/pkg/analysis_server/lib/src/services/correction/dart/add_type_annotation.dart
@@ -59,16 +59,7 @@
     }
 
     if (node is TypedLiteral) {
-      final type = node.staticType;
-      if (type is InterfaceType) {
-        await builder.addDartFileEdit(file, (builder) {
-          builder.addInsertion(node.offset, (builder) {
-            builder.write('<');
-            builder.writeTypes(type.typeArguments);
-            builder.write('>');
-          });
-        });
-      }
+      await _typedLiteral(builder, node);
       return;
     }
 
@@ -193,6 +184,31 @@
     await _applyChange(builder, declarationList.keyword, variable.name, type);
   }
 
+  Future<void> _typedLiteral(ChangeBuilder builder, TypedLiteral node) async {
+    final type = node.staticType;
+    if (type is! InterfaceType) {
+      return;
+    }
+
+    final int offset;
+    switch (node) {
+      case ListLiteral():
+        offset = node.leftBracket.offset;
+      case SetOrMapLiteral():
+        offset = node.leftBracket.offset;
+      default:
+        return;
+    }
+
+    await builder.addDartFileEdit(file, (builder) {
+      builder.addInsertion(offset, (builder) {
+        builder.write('<');
+        builder.writeTypes(type.typeArguments);
+        builder.write('>');
+      });
+    });
+  }
+
   DartType? _typeForVariable(VariableDeclaration variable) {
     var initializer = variable.initializer;
     if (initializer != null) {
diff --git a/pkg/analysis_server/test/src/services/correction/fix/add_type_annotation_test.dart b/pkg/analysis_server/test/src/services/correction/fix/add_type_annotation_test.dart
index 685072f..0ddc345 100644
--- a/pkg/analysis_server/test/src/services/correction/fix/add_type_annotation_test.dart
+++ b/pkg/analysis_server/test/src/services/correction/fix/add_type_annotation_test.dart
@@ -280,6 +280,19 @@
 ''');
   }
 
+  Future<void> test_setOrMapLiteral_map_const() async {
+    await resolveTestCode('''
+void f() {
+  (const {0: true});
+}
+''');
+    await assertHasFix(r'''
+void f() {
+  (const <int, bool>{0: true});
+}
+''');
+  }
+
   Future<void> test_setOrMapLiteral_set() async {
     await resolveTestCode('''
 void f() {
@@ -292,6 +305,19 @@
 }
 ''');
   }
+
+  Future<void> test_setOrMapLiteral_set_const() async {
+    await resolveTestCode('''
+void f() {
+  (const {0, 1, 2});
+}
+''');
+    await assertHasFix(r'''
+void f() {
+  (const <int>{0, 1, 2});
+}
+''');
+  }
 }
 
 @reflectiveTest
