diff --git a/config.xsd b/config.xsd
index f451608af..105f4c5fd 100644
--- a/config.xsd
+++ b/config.xsd
@@ -146,11 +146,11 @@
-
-
+
+
-
+
diff --git a/src/Psalm/Internal/Analyzer/ClassAnalyzer.php b/src/Psalm/Internal/Analyzer/ClassAnalyzer.php
index 01a825e88..ebb30e9a6 100644
--- a/src/Psalm/Internal/Analyzer/ClassAnalyzer.php
+++ b/src/Psalm/Internal/Analyzer/ClassAnalyzer.php
@@ -251,7 +251,8 @@ class ClassAnalyzer extends ClassLikeAnalyzer
if (IssueBuffer::accepts(
new DeprecatedClass(
$parent_fq_class_name . ' is marked deprecated',
- $code_location
+ $code_location,
+ $parent_fq_class_name
),
array_merge($storage->suppressed_issues, $this->getSuppressedIssues())
)) {
@@ -270,7 +271,8 @@ class ClassAnalyzer extends ClassLikeAnalyzer
if (IssueBuffer::accepts(
new InternalClass(
$parent_fq_class_name . ' is marked internal',
- $code_location
+ $code_location,
+ $parent_fq_class_name
),
array_merge($storage->suppressed_issues, $this->getSuppressedIssues())
)) {
@@ -285,7 +287,8 @@ class ClassAnalyzer extends ClassLikeAnalyzer
if (IssueBuffer::accepts(
new InternalClass(
$parent_fq_class_name . ' is internal to ' . $parent_class_storage->psalm_internal,
- $code_location
+ $code_location,
+ $parent_fq_class_name
),
array_merge($storage->suppressed_issues, $this->getSuppressedIssues())
)) {
@@ -376,7 +379,8 @@ class ClassAnalyzer extends ClassLikeAnalyzer
if (IssueBuffer::accepts(
new UndefinedInterface(
$fq_interface_name . ' is not an interface',
- $code_location
+ $code_location,
+ $fq_interface_name
),
array_merge($storage->suppressed_issues, $this->getSuppressedIssues())
)) {
@@ -461,7 +465,8 @@ class ClassAnalyzer extends ClassLikeAnalyzer
if (IssueBuffer::accepts(
new DeprecatedInterface(
$interface_name . ' is marked deprecated',
- $code_location
+ $code_location,
+ $interface_name
),
array_merge($storage->suppressed_issues, $this->getSuppressedIssues())
)) {
diff --git a/src/Psalm/Internal/Analyzer/InterfaceAnalyzer.php b/src/Psalm/Internal/Analyzer/InterfaceAnalyzer.php
index 20fb1158b..93d13ca79 100644
--- a/src/Psalm/Internal/Analyzer/InterfaceAnalyzer.php
+++ b/src/Psalm/Internal/Analyzer/InterfaceAnalyzer.php
@@ -63,7 +63,8 @@ class InterfaceAnalyzer extends ClassLikeAnalyzer
if (\Psalm\IssueBuffer::accepts(
new UndefinedInterface(
$extended_interface_name . ' is not an interface',
- $code_location
+ $code_location,
+ $extended_interface_name
),
$this->getSuppressedIssues()
)) {
diff --git a/src/Psalm/Internal/Analyzer/Statements/Expression/Call/NewAnalyzer.php b/src/Psalm/Internal/Analyzer/Statements/Expression/Call/NewAnalyzer.php
index 0a8c64c44..85a38b775 100644
--- a/src/Psalm/Internal/Analyzer/Statements/Expression/Call/NewAnalyzer.php
+++ b/src/Psalm/Internal/Analyzer/Statements/Expression/Call/NewAnalyzer.php
@@ -311,7 +311,8 @@ class NewAnalyzer extends \Psalm\Internal\Analyzer\Statements\Expression\CallAna
if (IssueBuffer::accepts(
new DeprecatedClass(
$fq_class_name . ' is marked deprecated',
- new CodeLocation($statements_analyzer->getSource(), $stmt)
+ new CodeLocation($statements_analyzer->getSource(), $stmt),
+ $fq_class_name
),
$statements_analyzer->getSuppressedIssues()
)) {
@@ -325,7 +326,8 @@ class NewAnalyzer extends \Psalm\Internal\Analyzer\Statements\Expression\CallAna
if (IssueBuffer::accepts(
new InternalClass(
$fq_class_name . ' is marked internal to ' . $storage->psalm_internal,
- new CodeLocation($statements_analyzer->getSource(), $stmt)
+ new CodeLocation($statements_analyzer->getSource(), $stmt),
+ $fq_class_name
),
$statements_analyzer->getSuppressedIssues()
)) {
@@ -339,7 +341,8 @@ class NewAnalyzer extends \Psalm\Internal\Analyzer\Statements\Expression\CallAna
if (IssueBuffer::accepts(
new InternalClass(
$fq_class_name . ' is marked internal',
- new CodeLocation($statements_analyzer->getSource(), $stmt)
+ new CodeLocation($statements_analyzer->getSource(), $stmt),
+ $fq_class_name
),
$statements_analyzer->getSuppressedIssues()
)) {
diff --git a/src/Psalm/Internal/Analyzer/Statements/Expression/Call/StaticCallAnalyzer.php b/src/Psalm/Internal/Analyzer/Statements/Expression/Call/StaticCallAnalyzer.php
index 8eccbe8b0..3c8a95e04 100644
--- a/src/Psalm/Internal/Analyzer/Statements/Expression/Call/StaticCallAnalyzer.php
+++ b/src/Psalm/Internal/Analyzer/Statements/Expression/Call/StaticCallAnalyzer.php
@@ -585,7 +585,8 @@ class StaticCallAnalyzer extends \Psalm\Internal\Analyzer\Statements\Expression\
if (IssueBuffer::accepts(
new DeprecatedClass(
$fq_class_name . ' is marked deprecated',
- new CodeLocation($statements_analyzer->getSource(), $stmt)
+ new CodeLocation($statements_analyzer->getSource(), $stmt),
+ $fq_class_name
),
$statements_analyzer->getSuppressedIssues()
)) {
@@ -600,7 +601,8 @@ class StaticCallAnalyzer extends \Psalm\Internal\Analyzer\Statements\Expression\
if (IssueBuffer::accepts(
new InternalClass(
$fq_class_name . ' is marked internal to ' . $class_storage->psalm_internal,
- new CodeLocation($statements_analyzer->getSource(), $stmt)
+ new CodeLocation($statements_analyzer->getSource(), $stmt),
+ $fq_class_name
),
$statements_analyzer->getSuppressedIssues()
)) {
@@ -617,7 +619,8 @@ class StaticCallAnalyzer extends \Psalm\Internal\Analyzer\Statements\Expression\
if (IssueBuffer::accepts(
new InternalClass(
$fq_class_name . ' is marked internal',
- new CodeLocation($statements_analyzer->getSource(), $stmt)
+ new CodeLocation($statements_analyzer->getSource(), $stmt),
+ $fq_class_name
),
$statements_analyzer->getSuppressedIssues()
)) {
diff --git a/src/Psalm/Issue/DeprecatedClass.php b/src/Psalm/Issue/DeprecatedClass.php
index a29fd751b..a48ef5abf 100644
--- a/src/Psalm/Issue/DeprecatedClass.php
+++ b/src/Psalm/Issue/DeprecatedClass.php
@@ -1,6 +1,6 @@