actuals) {
return nilMethodCheck;
}
+ private SharedInapplicableMethodException getMethodCheckFailure() {
+ return methodCheckFailure == null ? methodCheckFailure = new SharedInapplicableMethodException() : methodCheckFailure;
+ }
}
/**
@@ -1036,7 +1042,7 @@ public class Resolve {
}
public void report(DiagnosticPosition pos, JCDiagnostic details) {
- throw new InapplicableMethodException(details);
+ throw new InapplicableMethodException(details, Resolve.this.dumpStacktraceOnError);
}
public Warner checkWarner(DiagnosticPosition pos, Type found, Type req) {
@@ -1392,24 +1398,19 @@ public class Resolve {
}
}
- public static class InapplicableMethodException extends RuntimeException {
+ public static class InapplicableMethodException extends CompilerInternalException {
private static final long serialVersionUID = 0;
transient JCDiagnostic diagnostic;
- InapplicableMethodException(JCDiagnostic diag) {
+ InapplicableMethodException(JCDiagnostic diag, boolean dumpStackTraceOnError) {
+ super(dumpStackTraceOnError);
this.diagnostic = diag;
}
public JCDiagnostic getDiagnostic() {
return diagnostic;
}
-
- @Override
- public Throwable fillInStackTrace() {
- // This is an internal exception; the stack trace is irrelevant.
- return this;
- }
}
/* ***************************************************************************
diff --git a/src/jdk.compiler/share/classes/com/sun/tools/javac/comp/TransPatterns.java b/src/jdk.compiler/share/classes/com/sun/tools/javac/comp/TransPatterns.java
index 2d522d01641..f1f4e73b5a6 100644
--- a/src/jdk.compiler/share/classes/com/sun/tools/javac/comp/TransPatterns.java
+++ b/src/jdk.compiler/share/classes/com/sun/tools/javac/comp/TransPatterns.java
@@ -79,6 +79,7 @@ import com.sun.tools.javac.code.Symbol.RecordComponent;
import com.sun.tools.javac.code.Type;
import static com.sun.tools.javac.code.TypeTag.BOT;
import static com.sun.tools.javac.code.TypeTag.VOID;
+
import com.sun.tools.javac.jvm.PoolConstant.LoadableConstant;
import com.sun.tools.javac.jvm.Target;
import com.sun.tools.javac.tree.JCTree;
@@ -786,7 +787,7 @@ public class TransPatterns extends TreeTranslator {
StringBuilder sb = new StringBuilder();
PrimitiveGenerator() {
- super(types);
+ types.super();
}
@Override
diff --git a/src/jdk.compiler/share/classes/com/sun/tools/javac/jvm/PoolWriter.java b/src/jdk.compiler/share/classes/com/sun/tools/javac/jvm/PoolWriter.java
index af6f4b67fae..bfdb9775e11 100644
--- a/src/jdk.compiler/share/classes/com/sun/tools/javac/jvm/PoolWriter.java
+++ b/src/jdk.compiler/share/classes/com/sun/tools/javac/jvm/PoolWriter.java
@@ -100,7 +100,7 @@ public class PoolWriter {
public PoolWriter(Types types, Names names) {
this.types = types;
this.names = names;
- this.signatureGen = new SharedSignatureGenerator(types);
+ this.signatureGen = new SharedSignatureGenerator();
this.pool = new WriteablePoolHelper();
}
@@ -278,8 +278,8 @@ public class PoolWriter {
*/
ByteBuffer sigbuf = new ByteBuffer();
- SharedSignatureGenerator(Types types) {
- super(types);
+ SharedSignatureGenerator() {
+ types.super();
}
/**
diff --git a/src/jdk.compiler/share/classes/com/sun/tools/javac/util/CompilerInternalException.java b/src/jdk.compiler/share/classes/com/sun/tools/javac/util/CompilerInternalException.java
new file mode 100644
index 00000000000..3d3c45368c2
--- /dev/null
+++ b/src/jdk.compiler/share/classes/com/sun/tools/javac/util/CompilerInternalException.java
@@ -0,0 +1,54 @@
+/*
+ * Copyright (c) 2024, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation. Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+package com.sun.tools.javac.util;
+
+/** The super class of all compiler internal exceptions
+ *
+ * This is NOT part of any supported API.
+ * If you write code that depends on this, you do so at your own risk.
+ * This code and its internal interfaces are subject to change or
+ * deletion without notice.
+ */
+public class CompilerInternalException extends RuntimeException {
+ private static final long serialVersionUID = 0;
+
+ @SuppressWarnings("this-escape")
+ public CompilerInternalException(boolean dumpStackTraceOnError) {
+ /* by default the stacktrace wont be filled, meaning that method CompilerInternalException::fillInStackTrace
+ * will always be invoked, if we do want to dump the stacktrace then we will invoke super::fillInStackTrace
+ * there is a bit of a dance here that could be fixed once flexible constructor bodies exits the preview
+ * state
+ */
+ if (dumpStackTraceOnError) {
+ super.fillInStackTrace();
+ }
+ }
+
+ @Override
+ public Throwable fillInStackTrace() {
+ return this;
+ }
+}
diff --git a/src/jdk.jshell/share/classes/jdk/jshell/TreeDissector.java b/src/jdk.jshell/share/classes/jdk/jshell/TreeDissector.java
index 518a61d6969..fc259b8bc7c 100644
--- a/src/jdk.jshell/share/classes/jdk/jshell/TreeDissector.java
+++ b/src/jdk.jshell/share/classes/jdk/jshell/TreeDissector.java
@@ -246,7 +246,7 @@ class TreeDissector {
StringBuilder sb = new StringBuilder();
TDSignatureGenerator(Types types) {
- super(types);
+ types.super();
}
@Override