Index: search/org/eclipse/jdt/internal/core/search/matching/MatchLocator.java =================================================================== RCS file: /home/eclipse/org.eclipse.jdt.core/search/org/eclipse/jdt/internal/core/search/matching/MatchLocator.java,v retrieving revision 1.249 diff -u -r1.249 MatchLocator.java --- search/org/eclipse/jdt/internal/core/search/matching/MatchLocator.java 15 Jun 2005 06:30:08 -0000 1.249 +++ search/org/eclipse/jdt/internal/core/search/matching/MatchLocator.java 21 Jun 2005 15:01:00 -0000 @@ -1914,7 +1914,8 @@ MatchingNodeSet nodeSet = this.currentPossibleMatch.nodeSet; if (BasicSearchEngine.VERBOSE) { System.out.println("Report matching: "); //$NON-NLS-1$ - System.out.println(" - node set:\n"+nodeSet); //$NON-NLS-1$ + System.out.print(" - node set: accurate="+nodeSet.matchingNodes.elementSize); //$NON-NLS-1$ + System.out.println(", possible="+nodeSet.possibleMatchingNodesSet.elementSize); //$NON-NLS-1$ System.out.println(" - must resolve: "+mustResolve); //$NON-NLS-1$ } boolean locatorMustResolve = this.patternLocator.mustResolve; @@ -1941,7 +1942,8 @@ } nodeSet.possibleMatchingNodesSet = new SimpleSet(3); if (BasicSearchEngine.VERBOSE) { - System.out.println(" - resolved node set:\n"+nodeSet); //$NON-NLS-1$ + System.out.print(" - node set: accurate="+nodeSet.matchingNodes.elementSize); //$NON-NLS-1$ + System.out.println(", possible="+nodeSet.possibleMatchingNodesSet.elementSize); //$NON-NLS-1$ } } else { this.unitScope = null; Index: search/org/eclipse/jdt/internal/core/search/matching/PatternLocator.java =================================================================== RCS file: /home/eclipse/org.eclipse.jdt.core/search/org/eclipse/jdt/internal/core/search/matching/PatternLocator.java,v retrieving revision 1.47 diff -u -r1.47 PatternLocator.java --- search/org/eclipse/jdt/internal/core/search/matching/PatternLocator.java 8 Jun 2005 16:53:08 -0000 1.47 +++ search/org/eclipse/jdt/internal/core/search/matching/PatternLocator.java 21 Jun 2005 15:01:01 -0000 @@ -651,7 +651,6 @@ int impossible = this.isErasureMatch ? ERASURE_MATCH : IMPOSSIBLE_MATCH; // pattern has type parameter(s) or type argument(s) - boolean isRawType = type.isRawType(); if (type.isGenericType()) { // Binding is generic, get its type variable(s) TypeVariableBinding[] typeVariables = null; @@ -669,14 +668,14 @@ } // TODO (frederic) do we need to verify each parameter? return level; // we can't do better - } else if (isRawType) { + } else if (type.isRawType()) { return level; // raw type always match - } else if (!type.isParameterizedType()) { + } else if (!type.isParameterizedType() && !(type.isArrayType() && ((ArrayBinding)type).leafComponentType.isParameterizedType())) { // Standard types (ie. neither generic nor parameterized nor raw types) // cannot match pattern with type parameters or arguments return (patternTypeArguments[depth]==null || patternTypeArguments[depth].length==0) ? level : IMPOSSIBLE_MATCH; } else { - ParameterizedTypeBinding paramTypeBinding = (ParameterizedTypeBinding) type; + ParameterizedTypeBinding paramTypeBinding = (ParameterizedTypeBinding) (type.isArrayType() ? ((ArrayBinding)type).leafComponentType : type); // Compare arguments only if there ones on both sides if (patternTypeArguments[depth] != null && patternTypeArguments[depth].length > 0 &&