Skip to content

Commit 4bdf93a

Browse files
committed
Try to add support for missing constructors
Signed-off-by: Rob Stryker <[email protected]>
1 parent 1c29a2e commit 4bdf93a

File tree

2 files changed

+36
-5
lines changed

2 files changed

+36
-5
lines changed

org.eclipse.jdt.core.compiler.batch/.settings/org.eclipse.pde.api.tools.prefs

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
#Fri May 21 10:24:07 EDT 2010
1+
ANNOTATION_ELEMENT_TYPE_ADDED_FIELD=Warning
22
ANNOTATION_ELEMENT_TYPE_ADDED_METHOD_WITHOUT_DEFAULT_VALUE=Error
33
ANNOTATION_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
44
ANNOTATION_ELEMENT_TYPE_REMOVED_FIELD=Error
@@ -8,6 +8,10 @@ API_COMPONENT_ELEMENT_TYPE_REMOVED_API_TYPE=Error
88
API_COMPONENT_ELEMENT_TYPE_REMOVED_REEXPORTED_API_TYPE=Error
99
API_COMPONENT_ELEMENT_TYPE_REMOVED_REEXPORTED_TYPE=Error
1010
API_COMPONENT_ELEMENT_TYPE_REMOVED_TYPE=Error
11+
API_USE_SCAN_FIELD_SEVERITY=Warning
12+
API_USE_SCAN_METHOD_SEVERITY=Warning
13+
API_USE_SCAN_TYPE_SEVERITY=Warning
14+
CLASS_ELEMENT_TYPE_ADDED_FIELD=Warning
1115
CLASS_ELEMENT_TYPE_ADDED_METHOD=Error
1216
CLASS_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
1317
CLASS_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
@@ -47,6 +51,7 @@ ILLEGAL_IMPLEMENT=Warning
4751
ILLEGAL_INSTANTIATE=Warning
4852
ILLEGAL_OVERRIDE=Warning
4953
ILLEGAL_REFERENCE=Warning
54+
INTERFACE_ELEMENT_TYPE_ADDED_DEFAULT_METHOD=Warning
5055
INTERFACE_ELEMENT_TYPE_ADDED_FIELD=Error
5156
INTERFACE_ELEMENT_TYPE_ADDED_METHOD=Error
5257
INTERFACE_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
@@ -58,6 +63,7 @@ INTERFACE_ELEMENT_TYPE_REMOVED_FIELD=Error
5863
INTERFACE_ELEMENT_TYPE_REMOVED_METHOD=Error
5964
INTERFACE_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
6065
INTERFACE_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
66+
INVALID_ANNOTATION=Warning
6167
INVALID_JAVADOC_TAG=Warning
6268
INVALID_REFERENCE_IN_SYSTEM_LIBRARIES=Warning
6369
LEAK_EXTEND=Warning
@@ -83,12 +89,15 @@ TYPE_PARAMETER_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
8389
TYPE_PARAMETER_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
8490
UNUSED_PROBLEM_FILTERS=Warning
8591
automatically_removed_unused_problem_filters=false
92+
changed_execution_env=Warning
8693
eclipse.preferences.version=1
87-
incompatible_api_component_version=Error
94+
incompatible_api_component_version=Warning
8895
incompatible_api_component_version_include_major_without_breaking_change=Disabled
8996
incompatible_api_component_version_include_minor_without_api_change=Disabled
90-
invalid_since_tag_version=Error
91-
malformed_since_tag=Error
92-
missing_since_tag=Error
97+
incompatible_api_component_version_report_major_without_breaking_change=Warning
98+
incompatible_api_component_version_report_minor_without_api_change=Warning
99+
invalid_since_tag_version=Warning
100+
malformed_since_tag=Warning
101+
missing_since_tag=Warning
93102
report_api_breakage_when_major_version_incremented=Disabled
94103
report_resolution_errors_api_component=Warning

org.eclipse.jdt.core.javac/src/org/eclipse/jdt/internal/core/search/matching/DOMConstructorLocator.java

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -174,6 +174,28 @@ public LocatorResponse match(AbstractTypeDeclaration node, NodeSetWrapper nodeSe
174174
&& matchesTypeReference(this.locator.pattern.declaringSimpleName, typeDecl.getSuperclassType())) {
175175
return toResponse(POSSIBLE_MATCH);
176176
}
177+
if( this.locator.pattern instanceof ConstructorPattern cp ) {
178+
MethodDeclaration constructor = (MethodDeclaration)node.bodyDeclarations().stream().
179+
filter(x -> x instanceof MethodDeclaration md && md.isConstructor()).findAny().orElse(null);
180+
if( constructor == null ) {
181+
// We are searching for a constructor but this type doesn't have one
182+
// Check it manually
183+
// constructor name is stored in selector field
184+
if (this.locator.pattern.declaringSimpleName != null &&
185+
!this.locator.matchesName(this.locator.pattern.declaringSimpleName, node.getName().toString().toCharArray()))
186+
return toResponse(IMPOSSIBLE_MATCH);
187+
188+
if (this.locator.pattern.parameterSimpleNames != null) {
189+
int length = this.locator.pattern.parameterSimpleNames.length;
190+
if( length > 0 ) return toResponse(IMPOSSIBLE_MATCH);
191+
}
192+
193+
return toResponse(ACCURATE_MATCH);
194+
}
195+
196+
197+
}
198+
177199
return toResponse(IMPOSSIBLE_MATCH);
178200
}
179201

0 commit comments

Comments
 (0)