Bug 426392 comment 7: Problems in OpenFromClipboardAction#getJavaElementMatches(..)
fixed failing tests
diff --git a/org.eclipse.jdt.debug.tests/tests/org/eclipse/jdt/debug/tests/ui/OpenFromClipboardTests.java b/org.eclipse.jdt.debug.tests/tests/org/eclipse/jdt/debug/tests/ui/OpenFromClipboardTests.java
index da293bb..ea8c2df 100644
--- a/org.eclipse.jdt.debug.tests/tests/org/eclipse/jdt/debug/tests/ui/OpenFromClipboardTests.java
+++ b/org.eclipse.jdt.debug.tests/tests/org/eclipse/jdt/debug/tests/ui/OpenFromClipboardTests.java
@@ -13,34 +13,27 @@
import java.util.ArrayList;
import java.util.List;
-import junit.extensions.TestSetup;
-import junit.framework.Test;
-import junit.framework.TestCase;
-import junit.framework.TestSuite;
-
-import org.junit.Assert;
-
-import org.eclipse.jdt.debug.testplugin.JavaProjectHelper;
-
-import org.eclipse.swt.widgets.Display;
-
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.Path;
-
import org.eclipse.core.resources.IContainer;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.ResourcesPlugin;
-
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.Path;
import org.eclipse.jdt.core.ICompilationUnit;
import org.eclipse.jdt.core.IJavaProject;
import org.eclipse.jdt.core.IPackageFragment;
import org.eclipse.jdt.core.IPackageFragmentRoot;
import org.eclipse.jdt.core.JavaModelException;
-
+import org.eclipse.jdt.debug.testplugin.JavaProjectHelper;
import org.eclipse.jdt.internal.debug.ui.actions.OpenFromClipboardAction;
-
import org.eclipse.jdt.launching.IVMInstall;
import org.eclipse.jdt.launching.JavaRuntime;
+import org.eclipse.swt.widgets.Display;
+import org.junit.Assert;
+
+import junit.extensions.TestSetup;
+import junit.framework.Test;
+import junit.framework.TestCase;
+import junit.framework.TestSuite;
/**
@@ -590,4 +583,12 @@
String s = "()";
assertEquals(INVALID, getMatachingPattern(s));
}
+
+ public void testInvalidPattern_3() throws Exception {
+ // https://bugs.eclipse.org/bugs/show_bug.cgi?id=426392#c6
+ String s = "java.lang.IllegalArgumentException\n" +
+ " at org.eclipse.core.runtime.Assert.isLegal(Assert.java:63)\n" +
+ " at something.completely.Different(Different.java:47)";
+ assertEquals(INVALID, getMatachingPattern(s));
+ }
}
diff --git a/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/actions/OpenFromClipboardAction.java b/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/actions/OpenFromClipboardAction.java
index 9aa4f03..dba454b 100644
--- a/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/actions/OpenFromClipboardAction.java
+++ b/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/actions/OpenFromClipboardAction.java
@@ -125,10 +125,21 @@
/**
* Pattern to match a line from a stack trace e.g.
+ * <code>(Assert.java:41)</code>
+ */
+ private static final String STACK_TRACE_PARENTHESIZED_PATTERN = "\\(" + WS + JAVA_FILE_LINE_PATTERN + WS + "\\)"; //$NON-NLS-1$ //$NON-NLS-2$
+
+ /**
+ * Pattern to match a line from a stack trace e.g.
* <code> at org.eclipse.core.runtime.Assert.isLegal(Assert.java:41)</code>
*/
- private static final String STACK_TRACE_LINE_PATTERN = "[^()]*?(" + STRICT_QUALIFIED_NAME_PATTERN + ")" + WS + "\\(" //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
- + WS + JAVA_FILE_LINE_PATTERN + WS + "\\)"; //$NON-NLS-1$
+ private static final String STACK_TRACE_LINE_PATTERN = "[^()]*?" + STACK_TRACE_PARENTHESIZED_PATTERN; //$NON-NLS-1$
+
+ /**
+ * Pattern to match a line from a stack trace e.g.
+ * <code> at org.eclipse.core.runtime.Assert.isLegal(Assert.java:41)</code>
+ */
+ private static final String STACK_TRACE_QUALIFIED_LINE_PATTERN = "[^()]*?(" + STRICT_QUALIFIED_NAME_PATTERN + ")" + WS + STACK_TRACE_PARENTHESIZED_PATTERN; //$NON-NLS-1$ //$NON-NLS-2$
/**
* Pattern to match a method e.g.
@@ -322,7 +333,7 @@
String lineNumber = typeLine.substring(index + 1, typeLine.length()).trim();
int line = (Integer.valueOf(lineNumber)).intValue();
- Pattern pattern = Pattern.compile(STACK_TRACE_LINE_PATTERN);
+ Pattern pattern = Pattern.compile(STACK_TRACE_QUALIFIED_LINE_PATTERN);
Matcher matcher = pattern.matcher(s);
if (matcher.find()) {
String qualifiedName = matcher.group(1);