Add `is_explicit_override` flag to `common.add_method` for plugins
diff --git a/mypy/plugins/common.py b/mypy/plugins/common.py
index 807dc7f..26f4bde 100644
--- a/mypy/plugins/common.py
+++ b/mypy/plugins/common.py
@@ -342,6 +342,7 @@
     is_explicit_override: bool,
 ) -> tuple[FuncDef | Decorator, SymbolTableNode]:
     args, return_type, self_type, tvar_defs = spec
+    has_base_method = info.get(name) is not None
 
     assert not (
         is_classmethod is True and is_staticmethod is True
@@ -380,7 +381,7 @@
     func.is_static = is_staticmethod
     func._fullname = info.fullname + "." + name
     func.line = info.line
-    func.is_explicit_override = is_explicit_override
+    func.is_explicit_override = is_explicit_override and has_base_method
 
     # Add decorator for is_staticmethod. It's unnecessary for is_classmethod.
     if is_staticmethod:
diff --git a/test-data/unit/check-custom-plugin.test b/test-data/unit/check-custom-plugin.test
index 70be1aa..def0526 100644
--- a/test-data/unit/check-custom-plugin.test
+++ b/test-data/unit/check-custom-plugin.test
@@ -1035,15 +1035,14 @@
 # flags: --config-file tmp/mypy.ini
 class BaseWithFoo: pass
 class ChildWithFoo(BaseWithFoo): pass
-
 class SomeWithFoo(ChildWithFoo): pass
 
 reveal_type(SomeWithFoo.foo1)
 reveal_type(SomeWithFoo.foo2)
 [out]
-main:5: error: Method "foo2" is not using @override but is overriding a method in class "__main__.ChildWithFoo"
+main:4: error: Method "foo2" is not using @override but is overriding a method in class "__main__.ChildWithFoo"
+main:6: note: Revealed type is "def (self: __main__.SomeWithFoo)"
 main:7: note: Revealed type is "def (self: __main__.SomeWithFoo)"
-main:8: note: Revealed type is "def (self: __main__.SomeWithFoo)"
 [file mypy.ini]
 \[mypy]
 plugins=<ROOT>/test-data/unit/plugins/add_method.py