From ae69e4776f8f0f59461f360190d4f2bd96f5c364 Mon Sep 17 00:00:00 2001 From: translatenix <119817707+translatenix@users.noreply.github.com> Date: Fri, 26 Apr 2024 20:32:48 -0700 Subject: [PATCH] Fix IntelliJ warnings in Java code Fix all IntelliJ warnings in Java production code except for bogus spelling warnings and warnings about unused public methods. Also fix some warnings emitted by Code->Inspect Code. Changes made: - use text block instead of string concatenation - extract method to avoid code duplication - use switch expression - fix Javadoc syntax and spelling - fix spelling in comment - increase class visibility to match visibility of use site - delete overriding method with same implementation - use String.isEmpty() and StringBuilder.isEmpty() - add @Serial annotation - make field final - remove unused field - remove unused private method - remove exceptions that aren't thrown from throws clause - insert non-null assertion - annotate overriding method with @Nonnull - suppress warning - delete unused class (WriteAuxiliarySlotNode) - add final modifier - remove unused error message - repeat @Nullable modifier in overriding method - remove never thrown exception from throws clause - remove redundant suppression --- .../org/pkl/core/parser/ParserBenchmark.java | 51 +++++++-------- .../main/java/org/pkl/config/java/Config.java | 2 +- .../config/java/mapper/ConverterFactory.java | 4 +- .../pkl/config/java/mapper/Reflection.java | 8 +-- .../core/generator/MemberRegistryGenerator.kt | 2 +- .../main/java/org/pkl/core/DurationUnit.java | 27 +++----- .../src/main/java/org/pkl/core/PType.java | 3 +- .../org/pkl/core/StackFrameTransformers.java | 2 +- .../java/org/pkl/core/ValueFormatter.java | 10 --- .../java/org/pkl/core/ValueRenderers.java | 5 +- .../src/main/java/org/pkl/core/Version.java | 2 +- .../org/pkl/core/ast/builder/AstBuilder.java | 63 ++++++++----------- .../org/pkl/core/ast/builder/SymbolTable.java | 4 -- .../core/ast/expression/binary/EqualNode.java | 6 +- .../ast/expression/binary/NotEqualNode.java | 6 +- .../generator/GeneratorMemberNode.java | 2 +- .../literal/PropertiesLiteralNode.java | 2 +- .../literal/SpecializedObjectLiteralNode.java | 1 + .../core/ast/expression/unary/ImportNode.java | 4 -- .../frame/ReadEnclosingAuxiliarySlotNode.java | 1 - .../pkl/core/ast/frame/ReadFrameSlotNode.java | 1 - .../ast/frame/WriteAuxiliarySlotNode.java | 31 --------- .../core/ast/internal/IsInstanceOfNode.java | 5 +- .../org/pkl/core/ast/member/ObjectMember.java | 5 +- .../java/org/pkl/core/ast/type/TypeNode.java | 3 +- .../java/org/pkl/core/module/ModuleKeys.java | 15 +---- .../java/org/pkl/core/module/PathElement.java | 2 +- .../module/ProjectDependenciesManager.java | 7 +-- .../pkl/core/packages/PackageResolvers.java | 4 +- .../org/pkl/core/project/ProjectDeps.java | 2 +- .../java/org/pkl/core/runtime/Identifier.java | 11 ---- .../java/org/pkl/core/runtime/MathModule.java | 7 --- .../java/org/pkl/core/runtime/VmClass.java | 4 +- .../org/pkl/core/runtime/VmCollection.java | 1 + .../java/org/pkl/core/runtime/VmLanguage.java | 4 +- .../main/java/org/pkl/core/runtime/VmMap.java | 13 +++- .../org/pkl/core/stdlib/AbstractRenderer.java | 2 +- .../java/org/pkl/core/stdlib/PklName.java | 4 +- .../org/pkl/core/stdlib/VmObjectFactory.java | 1 - .../pkl/core/stdlib/xml/RendererNodes.java | 3 +- .../main/java/org/pkl/core/util/IoUtils.java | 57 ++++------------- .../org/pkl/core/util/NonnullByDefault.java | 5 +- .../java/org/pkl/core/util/StringUtils.java | 2 + .../org/pkl/core/util/json/JsonParser.java | 2 +- .../org/pkl/core/util/json/JsonWriter.java | 2 +- .../org/pkl/core/util/xml/Xml10Validator.java | 6 +- .../org/pkl/core/util/xml/Xml11Validator.java | 6 +- .../org/pkl/core/util/yaml/YamlEscaper.java | 1 + .../org/pkl/core/errorMessages.properties | 30 +-------- .../main/java/org/pkl/executor/Version.java | 5 +- .../main/java/org/pkl/gradle/PklPlugin.java | 4 +- 51 files changed, 148 insertions(+), 302 deletions(-) delete mode 100644 pkl-core/src/main/java/org/pkl/core/ast/frame/WriteAuxiliarySlotNode.java diff --git a/bench/src/jmh/java/org/pkl/core/parser/ParserBenchmark.java b/bench/src/jmh/java/org/pkl/core/parser/ParserBenchmark.java index 9442786e..a05075d4 100644 --- a/bench/src/jmh/java/org/pkl/core/parser/ParserBenchmark.java +++ b/bench/src/jmh/java/org/pkl/core/parser/ParserBenchmark.java @@ -30,30 +30,31 @@ public class ParserBenchmark { public void run() { new Parser() .parseModule( - "a1 {\n" - + " a2 {\n" - + " a3 {\n" - + " a4 {\n" - + " a5 {\n" - + " a6 {\n" - + " a7 {\n" - + " a8 {\n" - + " a9 {\n" - + " a10 {\n" - + " a11 {\n" - + " a12 {\n" - + " a13 = map(map(map((x) -> 1)))\n" - + " }\n" - + " }\n" - + " }\n" - + " }\n" - + " }\n" - + " }\n" - + " }\n" - + " }\n" - + " }\n" - + " }\n" - + " }\n" - + "}"); + """ + a1 { + a2 { + a3 { + a4 { + a5 { + a6 { + a7 { + a8 { + a9 { + a10 { + a11 { + a12 { + a13 = map(map(map((x) -> 1))) + } + } + } + } + } + } + } + } + } + } + } + }"""); } } diff --git a/pkl-config-java/src/main/java/org/pkl/config/java/Config.java b/pkl-config-java/src/main/java/org/pkl/config/java/Config.java index 09a12fb0..fd814c71 100644 --- a/pkl-config-java/src/main/java/org/pkl/config/java/Config.java +++ b/pkl-config-java/src/main/java/org/pkl/config/java/Config.java @@ -55,7 +55,7 @@ public interface Config { /** * Converts this node's value to the given {@link Type}. * - *

Note that usages of this methods are not type safe. + *

Note that usages of this method are not type safe. * * @throws ConversionException if the value cannot be converted to the given type */ diff --git a/pkl-config-java/src/main/java/org/pkl/config/java/mapper/ConverterFactory.java b/pkl-config-java/src/main/java/org/pkl/config/java/mapper/ConverterFactory.java index 0be18af3..d0bac8d1 100644 --- a/pkl-config-java/src/main/java/org/pkl/config/java/mapper/ConverterFactory.java +++ b/pkl-config-java/src/main/java/org/pkl/config/java/mapper/ConverterFactory.java @@ -22,12 +22,12 @@ import org.pkl.core.PClassInfo; /** * A factory for {@link Converter}s. Used to implement conversions to generic Java classes. In such - * a case a single {@link Converter} does not suffice. Instead the factory creates a new converter + * a case a single {@link Converter} does not suffice. Instead, the factory creates a new converter * for every parameterization of the target type. Once created, the converter is cached for later * use, and the factory is never again invoked for the same parameterized target type. * *

For best performance, all introspection of target types (for example using {@link Reflection}) - * should happen in the factory rather then the returned converters. + * should happen in the factory rather than the returned converters. */ @FunctionalInterface public interface ConverterFactory { diff --git a/pkl-config-java/src/main/java/org/pkl/config/java/mapper/Reflection.java b/pkl-config-java/src/main/java/org/pkl/config/java/mapper/Reflection.java index 3049d4af..f421a8dd 100644 --- a/pkl-config-java/src/main/java/org/pkl/config/java/mapper/Reflection.java +++ b/pkl-config-java/src/main/java/org/pkl/config/java/mapper/Reflection.java @@ -104,8 +104,8 @@ public final class Reflection { /** * Returns a parameterization of the given raw supertype, taking into account type arguments of - * the given subtype. For example, @{code getExactSupertype(listOf(String.class), - * Collection.class)} will return @{code collectionOf(String.class)}. If the given subtype is not + * the given subtype. For example, {@code getExactSupertype(listOf(String.class), + * Collection.class)} will return {@code collectionOf(String.class)}. If the given subtype is not * a parameterized type, returns the given raw supertype. If the given types have no inheritance * relationship, returns {@code null}. */ @@ -118,8 +118,8 @@ public final class Reflection { /** * Returns a parameterization of the given raw subtype, taking into account type arguments of the - * given supertype. For example, @{code getExactSubtype(collectionOf(String.class), List.class)} - * will return @{code listOf(String.class)}. If the given supertype is not a parameterized type, + * given supertype. For example, {@code getExactSubtype(collectionOf(String.class), List.class)} + * will return {@code listOf(String.class)}. If the given supertype is not a parameterized type, * returns the given raw subtype. If the given types have no inheritance relationship, returns * {@code null}. */ diff --git a/pkl-core/src/generator/kotlin/org/pkl/core/generator/MemberRegistryGenerator.kt b/pkl-core/src/generator/kotlin/org/pkl/core/generator/MemberRegistryGenerator.kt index ddabcef4..cc866ccf 100644 --- a/pkl-core/src/generator/kotlin/org/pkl/core/generator/MemberRegistryGenerator.kt +++ b/pkl-core/src/generator/kotlin/org/pkl/core/generator/MemberRegistryGenerator.kt @@ -20,7 +20,7 @@ import javax.lang.model.type.TypeMirror * - Generated Truffle node classes for stdlib members. * These classes are located in subpackages of `org.pkl.core.stdlib` * and identified via their `@GeneratedBy` annotations. - * - `@PklName` annotations on hand-written node classes from which Truffle node classes are generated. + * - `@PklName` annotations on handwritten node classes from which Truffle node classes are generated. */ class MemberRegistryGenerator : AbstractProcessor() { private val truffleNodeClassSuffix = "NodeGen" diff --git a/pkl-core/src/main/java/org/pkl/core/DurationUnit.java b/pkl-core/src/main/java/org/pkl/core/DurationUnit.java index dc76fc90..e0d75c2b 100644 --- a/pkl-core/src/main/java/org/pkl/core/DurationUnit.java +++ b/pkl-core/src/main/java/org/pkl/core/DurationUnit.java @@ -83,24 +83,15 @@ public enum DurationUnit { /** Converts this unit to a {@link java.util.concurrent.TimeUnit}. */ public TimeUnit toTimeUnit() { - switch (this) { - case NANOS: - return TimeUnit.NANOSECONDS; - case MICROS: - return TimeUnit.MICROSECONDS; - case MILLIS: - return TimeUnit.MILLISECONDS; - case SECONDS: - return TimeUnit.SECONDS; - case MINUTES: - return TimeUnit.MINUTES; - case HOURS: - return TimeUnit.HOURS; - case DAYS: - return TimeUnit.DAYS; - default: - throw new AssertionError("Unknown duration unit: " + this); - } + return switch (this) { + case NANOS -> TimeUnit.NANOSECONDS; + case MICROS -> TimeUnit.MICROSECONDS; + case MILLIS -> TimeUnit.MILLISECONDS; + case SECONDS -> TimeUnit.SECONDS; + case MINUTES -> TimeUnit.MINUTES; + case HOURS -> TimeUnit.HOURS; + case DAYS -> TimeUnit.DAYS; + }; } @Override diff --git a/pkl-core/src/main/java/org/pkl/core/PType.java b/pkl-core/src/main/java/org/pkl/core/PType.java index c6f34b63..987fac22 100644 --- a/pkl-core/src/main/java/org/pkl/core/PType.java +++ b/pkl-core/src/main/java/org/pkl/core/PType.java @@ -109,8 +109,7 @@ public abstract class PType implements Serializable { } public static final class Constrained extends PType { - - private static final long serialVersionUID = 0L; + @Serial private static final long serialVersionUID = 0L; private final PType baseType; private final List constraints; diff --git a/pkl-core/src/main/java/org/pkl/core/StackFrameTransformers.java b/pkl-core/src/main/java/org/pkl/core/StackFrameTransformers.java index 42d4bc7b..f2111285 100644 --- a/pkl-core/src/main/java/org/pkl/core/StackFrameTransformers.java +++ b/pkl-core/src/main/java/org/pkl/core/StackFrameTransformers.java @@ -45,7 +45,7 @@ public final class StackFrameTransformers { return frame; }; - public static StackFrameTransformer replacePackageUriWithSourceCodeUrl = + public static final StackFrameTransformer replacePackageUriWithSourceCodeUrl = frame -> { var uri = URI.create(frame.getModuleUri()); if (!uri.getScheme().equalsIgnoreCase("package")) { diff --git a/pkl-core/src/main/java/org/pkl/core/ValueFormatter.java b/pkl-core/src/main/java/org/pkl/core/ValueFormatter.java index f53e0127..37a203a4 100644 --- a/pkl-core/src/main/java/org/pkl/core/ValueFormatter.java +++ b/pkl-core/src/main/java/org/pkl/core/ValueFormatter.java @@ -16,18 +16,8 @@ package org.pkl.core; import java.io.IOException; -import org.pkl.core.util.ArrayCharEscaper; public final class ValueFormatter { - private static final ArrayCharEscaper charEscaper = - ArrayCharEscaper.builder() - .withEscape('\n', "\\n") - .withEscape('\r', "\\r") - .withEscape('\t', "\\t") - .withEscape('"', "\\\"") - .withEscape('\\', "\\\\") - .build(); - private static final ValueFormatter BASIC = new ValueFormatter(false, false); private static final ValueFormatter WITH_CUSTOM_DELIMITERS = new ValueFormatter(false, true); diff --git a/pkl-core/src/main/java/org/pkl/core/ValueRenderers.java b/pkl-core/src/main/java/org/pkl/core/ValueRenderers.java index 4e17202e..6c99a791 100644 --- a/pkl-core/src/main/java/org/pkl/core/ValueRenderers.java +++ b/pkl-core/src/main/java/org/pkl/core/ValueRenderers.java @@ -60,8 +60,9 @@ public final class ValueRenderers { * Creates a renderer for {@link java.util.Properties} file format. If {@code omitNullProperties} * is {@code true}, object properties and map entries whose value is {@code null} will not be * rendered. If {@code restrictCharset} is {@code true} characters outside the printable US-ASCII - * charset range will be rendered as Unicode escapes (see - * https://docs.oracle.com/javase/specs/jls/se8/html/jls-3.html#jls-3.3). + * charset range will be rendered as Unicode + * escapes. */ public static ValueRenderer properties( Writer writer, boolean omitNullProperties, boolean restrictCharset) { diff --git a/pkl-core/src/main/java/org/pkl/core/Version.java b/pkl-core/src/main/java/org/pkl/core/Version.java index 7548d360..622e38be 100644 --- a/pkl-core/src/main/java/org/pkl/core/Version.java +++ b/pkl-core/src/main/java/org/pkl/core/Version.java @@ -21,7 +21,7 @@ import org.pkl.core.util.LateInit; import org.pkl.core.util.Nullable; /** - * A semantic version (https://semver.org/spec/v2.0.0.html). + * A semantic version. * *

This class guarantees that valid semantic version numbers are handled correctly, but does * not guarantee that invalid semantic version numbers are rejected. diff --git a/pkl-core/src/main/java/org/pkl/core/ast/builder/AstBuilder.java b/pkl-core/src/main/java/org/pkl/core/ast/builder/AstBuilder.java index be20bd05..c4d15a7e 100644 --- a/pkl-core/src/main/java/org/pkl/core/ast/builder/AstBuilder.java +++ b/pkl-core/src/main/java/org/pkl/core/ast/builder/AstBuilder.java @@ -1924,26 +1924,7 @@ public final class AstBuilder extends AbstractAstBuilder { var functionName = toIdentifier(ctx.Identifier()); var argCtx = ctx.argumentList(); var receiver = visitExpr(ctx.expr()); - - var currentScope = symbolTable.getCurrentScope(); - var constLevel = currentScope.getConstLevel(); - var needsConst = false; - if (receiver instanceof OuterNode) { - var outerScope = getParentLexicalScope(); - if (outerScope != null) { - needsConst = - switch (constLevel) { - case MODULE -> outerScope.isModuleScope(); - case ALL -> outerScope.getConstLevel() != ConstLevel.ALL; - case NONE -> false; - }; - } - } else if (receiver instanceof GetModuleNode) { - needsConst = constLevel != ConstLevel.NONE; - } else if (receiver instanceof ThisNode) { - var constDepth = currentScope.getConstDepth(); - needsConst = constLevel == ConstLevel.ALL && constDepth == -1; - } + var needsConst = needsConst(receiver); if (ctx.t.getType() == PklLexer.QDOT) { //noinspection ConstantConditions @@ -2008,24 +1989,7 @@ public final class AstBuilder extends AbstractAstBuilder { } } - var constLevel = symbolTable.getCurrentScope().getConstLevel(); - var needsConst = false; - if (receiver instanceof OuterNode) { - var outerScope = getParentLexicalScope(); - if (outerScope != null) { - needsConst = - switch (constLevel) { - case MODULE -> outerScope.isModuleScope(); - case ALL -> outerScope.getConstLevel() != ConstLevel.ALL; - case NONE -> false; - }; - } - } else if (receiver instanceof GetModuleNode) { - needsConst = constLevel != ConstLevel.NONE; - } else if (receiver instanceof ThisNode) { - var constDepth = symbolTable.getCurrentScope().getConstDepth(); - needsConst = constLevel == ConstLevel.ALL && constDepth == -1; - } + var needsConst = needsConst(receiver); if (ctx.t.getType() == PklLexer.QDOT) { return new NullPropagatingOperationNode( sourceSection, @@ -2127,6 +2091,29 @@ public final class AstBuilder extends AbstractAstBuilder { return ctx.es.stream().map(this::visitExpr).toArray(ExpressionNode[]::new); } + private boolean needsConst(ExpressionNode receiver) { + var scope = symbolTable.getCurrentScope(); + var constLevel = scope.getConstLevel(); + var needsConst = false; + if (receiver instanceof OuterNode) { + var outerScope = getParentLexicalScope(); + if (outerScope != null) { + needsConst = + switch (constLevel) { + case MODULE -> outerScope.isModuleScope(); + case ALL -> outerScope.getConstLevel() != ConstLevel.ALL; + case NONE -> false; + }; + } + } else if (receiver instanceof GetModuleNode) { + needsConst = constLevel != ConstLevel.NONE; + } else if (receiver instanceof ThisNode) { + var constDepth = scope.getConstDepth(); + needsConst = constLevel == ConstLevel.ALL && constDepth == -1; + } + return needsConst; + } + private Identifier toIdentifier(TerminalNode node) { return Identifier.get(node.getText()); } diff --git a/pkl-core/src/main/java/org/pkl/core/ast/builder/SymbolTable.java b/pkl-core/src/main/java/org/pkl/core/ast/builder/SymbolTable.java index 9ed3f2d9..806f951e 100644 --- a/pkl-core/src/main/java/org/pkl/core/ast/builder/SymbolTable.java +++ b/pkl-core/src/main/java/org/pkl/core/ast/builder/SymbolTable.java @@ -223,10 +223,6 @@ public final class SymbolTable { return scope; } - private boolean isConst() { - return constLevel.isConst(); - } - /** * Returns the lexical depth from the current scope to the top-most scope that is const. Depth * is 0-indexed, and -1 means that the scope is not a const scope. diff --git a/pkl-core/src/main/java/org/pkl/core/ast/expression/binary/EqualNode.java b/pkl-core/src/main/java/org/pkl/core/ast/expression/binary/EqualNode.java index c5f71b40..532eef39 100644 --- a/pkl-core/src/main/java/org/pkl/core/ast/expression/binary/EqualNode.java +++ b/pkl-core/src/main/java/org/pkl/core/ast/expression/binary/EqualNode.java @@ -65,9 +65,9 @@ public abstract class EqualNode extends ExpressionNode { } /** - * This method effectively covers `VmValue left, VmValue right` but is implemented in a more - * efficient way. See: - * https://www.graalvm.org/22.0/graalvm-as-a-platform/language-implementation-framework/TruffleLibraries/#strategy-2-java-interfaces + * This method effectively covers `VmValue left, VmValue right` but is implemented in a more + * efficient way. */ @Specialization( guards = {"left.getClass() == leftJavaClass", "right.getClass() == leftJavaClass"}, diff --git a/pkl-core/src/main/java/org/pkl/core/ast/expression/binary/NotEqualNode.java b/pkl-core/src/main/java/org/pkl/core/ast/expression/binary/NotEqualNode.java index f67bafbb..0af7fbe6 100644 --- a/pkl-core/src/main/java/org/pkl/core/ast/expression/binary/NotEqualNode.java +++ b/pkl-core/src/main/java/org/pkl/core/ast/expression/binary/NotEqualNode.java @@ -65,9 +65,9 @@ public abstract class NotEqualNode extends ExpressionNode { } /** - * This method effectively covers `VmValue left, VmValue right` but is implemented in a more - * efficient way. See: - * https://www.graalvm.org/22.0/graalvm-as-a-platform/language-implementation-framework/TruffleLibraries/#strategy-2-java-interfaces + * This method effectively covers `VmValue left, VmValue right` but is implemented in a more + * efficient way. */ @Specialization( guards = {"left.getClass() == leftJavaClass", "right.getClass() == leftJavaClass"}, diff --git a/pkl-core/src/main/java/org/pkl/core/ast/expression/generator/GeneratorMemberNode.java b/pkl-core/src/main/java/org/pkl/core/ast/expression/generator/GeneratorMemberNode.java index 801be41d..5cdfbaa8 100644 --- a/pkl-core/src/main/java/org/pkl/core/ast/expression/generator/GeneratorMemberNode.java +++ b/pkl-core/src/main/java/org/pkl/core/ast/expression/generator/GeneratorMemberNode.java @@ -78,7 +78,7 @@ public abstract class GeneratorMemberNode extends PklNode { * `ObjectData.forBindings`. - 3 `FrameSlot`s for `i`, `key`, and `value` */ @ValueType - static final class ObjectData { + public static final class ObjectData { // member count is exact iff every for/when body has exactly one member ObjectData(int minMemberCount, int length) { this.members = EconomicMaps.create(minMemberCount); diff --git a/pkl-core/src/main/java/org/pkl/core/ast/expression/literal/PropertiesLiteralNode.java b/pkl-core/src/main/java/org/pkl/core/ast/expression/literal/PropertiesLiteralNode.java index 971cc901..bdf76d29 100644 --- a/pkl-core/src/main/java/org/pkl/core/ast/expression/literal/PropertiesLiteralNode.java +++ b/pkl-core/src/main/java/org/pkl/core/ast/expression/literal/PropertiesLiteralNode.java @@ -107,7 +107,7 @@ public abstract class PropertiesLiteralNode extends SpecializedObjectLiteralNode // Ultimately, this lambda or a lambda returned from it will call one of the other // specializations, // which will perform the "isValidXYZ" guard check. - // That said, to flag non-sensical amendments early, this specialization could have a guard to + // That said, to flag nonsensical amendments early, this specialization could have a guard to // check // that this amendment is at least one of a valid listing, mapping, or object amendment (modulo // parameters). diff --git a/pkl-core/src/main/java/org/pkl/core/ast/expression/literal/SpecializedObjectLiteralNode.java b/pkl-core/src/main/java/org/pkl/core/ast/expression/literal/SpecializedObjectLiteralNode.java index 16638eca..975f7632 100644 --- a/pkl-core/src/main/java/org/pkl/core/ast/expression/literal/SpecializedObjectLiteralNode.java +++ b/pkl-core/src/main/java/org/pkl/core/ast/expression/literal/SpecializedObjectLiteralNode.java @@ -67,6 +67,7 @@ public abstract class SpecializedObjectLiteralNode extends ObjectLiteralNode { // only runs once per VmClass (which often means once per PropertiesLiteralNode) // unless an XYZUncached specialization is active + @SuppressWarnings("ExtractMethodRecommender") @TruffleBoundary @Idempotent protected boolean checkIsValidTypedAmendment(Object parent) { diff --git a/pkl-core/src/main/java/org/pkl/core/ast/expression/unary/ImportNode.java b/pkl-core/src/main/java/org/pkl/core/ast/expression/unary/ImportNode.java index 11187478..f8fdd4a8 100644 --- a/pkl-core/src/main/java/org/pkl/core/ast/expression/unary/ImportNode.java +++ b/pkl-core/src/main/java/org/pkl/core/ast/expression/unary/ImportNode.java @@ -49,10 +49,6 @@ public final class ImportNode extends AbstractImportNode { assert importUri.isAbsolute(); } - public URI getImportUri() { - return importUri; - } - public Object executeGeneric(VirtualFrame frame) { if (importedModule == null) { CompilerDirectives.transferToInterpreterAndInvalidate(); diff --git a/pkl-core/src/main/java/org/pkl/core/ast/frame/ReadEnclosingAuxiliarySlotNode.java b/pkl-core/src/main/java/org/pkl/core/ast/frame/ReadEnclosingAuxiliarySlotNode.java index 0023e86d..9ad28498 100644 --- a/pkl-core/src/main/java/org/pkl/core/ast/frame/ReadEnclosingAuxiliarySlotNode.java +++ b/pkl-core/src/main/java/org/pkl/core/ast/frame/ReadEnclosingAuxiliarySlotNode.java @@ -23,7 +23,6 @@ import org.pkl.core.ast.ExpressionNode; import org.pkl.core.runtime.VmUtils; public class ReadEnclosingAuxiliarySlotNode extends ExpressionNode { - private final int slot; private final int levelsUp; diff --git a/pkl-core/src/main/java/org/pkl/core/ast/frame/ReadFrameSlotNode.java b/pkl-core/src/main/java/org/pkl/core/ast/frame/ReadFrameSlotNode.java index a0ed8303..70b1426a 100644 --- a/pkl-core/src/main/java/org/pkl/core/ast/frame/ReadFrameSlotNode.java +++ b/pkl-core/src/main/java/org/pkl/core/ast/frame/ReadFrameSlotNode.java @@ -22,7 +22,6 @@ import com.oracle.truffle.api.source.SourceSection; import org.pkl.core.ast.ExpressionNode; public abstract class ReadFrameSlotNode extends ExpressionNode { - private final int slot; protected ReadFrameSlotNode(SourceSection sourceSection, int slot) { diff --git a/pkl-core/src/main/java/org/pkl/core/ast/frame/WriteAuxiliarySlotNode.java b/pkl-core/src/main/java/org/pkl/core/ast/frame/WriteAuxiliarySlotNode.java deleted file mode 100644 index 50bcaee6..00000000 --- a/pkl-core/src/main/java/org/pkl/core/ast/frame/WriteAuxiliarySlotNode.java +++ /dev/null @@ -1,31 +0,0 @@ -/** - * Copyright © 2024 Apple Inc. and the Pkl project authors. All rights reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.pkl.core.ast.frame; - -import com.oracle.truffle.api.frame.VirtualFrame; -import org.pkl.core.ast.PklNode; - -public class WriteAuxiliarySlotNode extends PklNode { - private final int slot; - - public WriteAuxiliarySlotNode(int slot) { - this.slot = slot; - } - - public void evalGeneric(VirtualFrame frame, Object value) { - frame.setAuxiliarySlot(slot, value); - } -} diff --git a/pkl-core/src/main/java/org/pkl/core/ast/internal/IsInstanceOfNode.java b/pkl-core/src/main/java/org/pkl/core/ast/internal/IsInstanceOfNode.java index a28e5139..2046c11f 100644 --- a/pkl-core/src/main/java/org/pkl/core/ast/internal/IsInstanceOfNode.java +++ b/pkl-core/src/main/java/org/pkl/core/ast/internal/IsInstanceOfNode.java @@ -50,8 +50,9 @@ public abstract class IsInstanceOfNode extends PklNode { } /** - * This method effectively covers `VmValue value` but is implemented in a more efficient way. See: - * https://www.graalvm.org/22.0/graalvm-as-a-platform/language-implementation-framework/TruffleLibraries/#strategy-2-java-interfaces + * This method effectively covers `VmValue value` but is implemented in a more + * efficient way. */ @Specialization(guards = "value.getClass() == valueJavaClass", limit = "99") protected boolean evalVmValue( diff --git a/pkl-core/src/main/java/org/pkl/core/ast/member/ObjectMember.java b/pkl-core/src/main/java/org/pkl/core/ast/member/ObjectMember.java index 5187054a..773c9cf8 100644 --- a/pkl-core/src/main/java/org/pkl/core/ast/member/ObjectMember.java +++ b/pkl-core/src/main/java/org/pkl/core/ast/member/ObjectMember.java @@ -61,8 +61,9 @@ public final class ObjectMember extends Member { /** * Tells if this member is a property. * - *

Not named `isProperty()` to work around https://bugs.openjdk.java.net/browse/JDK-8185424 - * (which is apparently triggered by `-Xdoclint:none`). + *

Not named `isProperty()` to work around JDK-8185424 (which is apparently + * triggered by `-Xdoclint:none`). */ public boolean isProp() { return name != null; diff --git a/pkl-core/src/main/java/org/pkl/core/ast/type/TypeNode.java b/pkl-core/src/main/java/org/pkl/core/ast/type/TypeNode.java index 60e7621a..3eec0953 100644 --- a/pkl-core/src/main/java/org/pkl/core/ast/type/TypeNode.java +++ b/pkl-core/src/main/java/org/pkl/core/ast/type/TypeNode.java @@ -44,6 +44,7 @@ import org.pkl.core.ast.member.UntypedObjectMemberNode; import org.pkl.core.runtime.*; import org.pkl.core.util.EconomicMaps; import org.pkl.core.util.LateInit; +import org.pkl.core.util.Nonnull; import org.pkl.core.util.Nullable; public abstract class TypeNode extends PklNode { @@ -1683,7 +1684,7 @@ public abstract class TypeNode extends PklNode { } @Override - public VmTypeAlias getVmTypeAlias() { + public @Nonnull VmTypeAlias getVmTypeAlias() { return typeAlias; } diff --git a/pkl-core/src/main/java/org/pkl/core/module/ModuleKeys.java b/pkl-core/src/main/java/org/pkl/core/module/ModuleKeys.java index 23c22a89..a7c93ee8 100644 --- a/pkl-core/src/main/java/org/pkl/core/module/ModuleKeys.java +++ b/pkl-core/src/main/java/org/pkl/core/module/ModuleKeys.java @@ -151,13 +151,12 @@ public final class ModuleKeys { } @Override - public String loadSource() throws IOException { + public String loadSource() { return text; } @Override - public ResolvedModuleKey resolve(SecurityManager securityManager) - throws IOException, SecurityManagerException { + public ResolvedModuleKey resolve(SecurityManager securityManager) { return this; } @@ -272,11 +271,6 @@ public final class ModuleKeys { return this; } - @Override - public boolean isCached() { - return true; - } - @Override public ModuleKey getOriginal() { return this; @@ -469,11 +463,6 @@ public final class ModuleKeys { return true; } - @Override - public boolean isLocal() { - return false; - } - @Override public boolean isGlobbable() { return false; diff --git a/pkl-core/src/main/java/org/pkl/core/module/PathElement.java b/pkl-core/src/main/java/org/pkl/core/module/PathElement.java index a8ef77c3..e3128a83 100644 --- a/pkl-core/src/main/java/org/pkl/core/module/PathElement.java +++ b/pkl-core/src/main/java/org/pkl/core/module/PathElement.java @@ -25,7 +25,7 @@ import org.pkl.core.util.EconomicMaps; import org.pkl.core.util.Nullable; public class PathElement { - public static Comparator comparator = + public static final Comparator comparator = (o1, o2) -> { if (o1.isDirectory && !o2.isDirectory) { return 1; diff --git a/pkl-core/src/main/java/org/pkl/core/module/ProjectDependenciesManager.java b/pkl-core/src/main/java/org/pkl/core/module/ProjectDependenciesManager.java index 85a62c7e..f99d163e 100644 --- a/pkl-core/src/main/java/org/pkl/core/module/ProjectDependenciesManager.java +++ b/pkl-core/src/main/java/org/pkl/core/module/ProjectDependenciesManager.java @@ -50,10 +50,11 @@ public class ProjectDependenciesManager { private Map myDependencies = null; @GuardedBy("lock") - private EconomicMap> localPackageDependencies = null; + private final EconomicMap> localPackageDependencies = + EconomicMaps.create(); @GuardedBy("lock") - private EconomicMap> packageDependencies = + private final EconomicMap> packageDependencies = EconomicMaps.create(); private final Object lock = new Object(); @@ -74,7 +75,6 @@ public class ProjectDependenciesManager { } var projectDeps = getProjectDeps(); myDependencies = doBuildResolvedDependenciesForProject(declaredDependencies, projectDeps); - localPackageDependencies = EconomicMaps.create(); for (var localPkg : declaredDependencies.getLocalDependencies().values()) { ensureLocalProjectDependencyInitialized(localPkg, projectDeps); } @@ -83,7 +83,6 @@ public class ProjectDependenciesManager { private void ensureLocalProjectDependencyInitialized( DeclaredDependencies localProjectDependencies, ProjectDeps projectDeps) { - assert localPackageDependencies != null; // turn `package:` scheme into `projectpackage`: scheme var uri = PackageUri.create("project" + localProjectDependencies.getMyPackageUri()); if (localPackageDependencies.containsKey(uri)) { diff --git a/pkl-core/src/main/java/org/pkl/core/packages/PackageResolvers.java b/pkl-core/src/main/java/org/pkl/core/packages/PackageResolvers.java index 6641bf20..112f7ad3 100644 --- a/pkl-core/src/main/java/org/pkl/core/packages/PackageResolvers.java +++ b/pkl-core/src/main/java/org/pkl/core/packages/PackageResolvers.java @@ -339,7 +339,7 @@ class PackageResolvers { } @Override - public List doListElements(PackageAssetUri uri, Checksums checksums) + public List doListElements(PackageAssetUri uri, @Nullable Checksums checksums) throws IOException, SecurityManagerException { var packageUri = uri.getPackageUri(); ensurePackageDownloaded(packageUri, checksums); @@ -351,7 +351,7 @@ class PackageResolvers { } @Override - public boolean doHasElement(PackageAssetUri uri, Checksums checksums) + public boolean doHasElement(PackageAssetUri uri, @Nullable Checksums checksums) throws IOException, SecurityManagerException { var packageUri = uri.getPackageUri(); ensurePackageDownloaded(packageUri, checksums); diff --git a/pkl-core/src/main/java/org/pkl/core/project/ProjectDeps.java b/pkl-core/src/main/java/org/pkl/core/project/ProjectDeps.java index 05af1894..d8251ffa 100644 --- a/pkl-core/src/main/java/org/pkl/core/project/ProjectDeps.java +++ b/pkl-core/src/main/java/org/pkl/core/project/ProjectDeps.java @@ -86,7 +86,7 @@ public class ProjectDeps { return parse(input); } - public static ProjectDeps parse(String input) throws JsonParseException, URISyntaxException { + public static ProjectDeps parse(String input) throws JsonParseException { var parsed = Json.parseObject(input); var schemaVersion = parsed.getInt("schemaVersion"); if (!supportedSchemaVersions.contains(schemaVersion)) { diff --git a/pkl-core/src/main/java/org/pkl/core/runtime/Identifier.java b/pkl-core/src/main/java/org/pkl/core/runtime/Identifier.java index dac80cc4..be88c3dd 100644 --- a/pkl-core/src/main/java/org/pkl/core/runtime/Identifier.java +++ b/pkl-core/src/main/java/org/pkl/core/runtime/Identifier.java @@ -64,13 +64,8 @@ public final class Identifier implements Comparable { public static final Identifier CONVERTERS = get("converters"); public static final Identifier USE_MAPPING = get("useMapping"); - // members of pkl.base#IntSeq, pkl.base#RegexMatch - public static final Identifier START = get("start"); - public static final Identifier END = get("end"); - // members of pkl.base#RegexMatch public static final Identifier VALUE = get("value"); - public static final Identifier GROUPS = get("groups"); // members of pkl.base#Module public static final Identifier OUTPUT = get("output"); @@ -111,10 +106,6 @@ public final class Identifier implements Comparable { public static final Identifier PB = get("pb"); public static final Identifier PIB = get("pib"); - // members of pkl.base#Pair - public static final Identifier FIRST = get("first"); - public static final Identifier SECOND = get("second"); - // members of pkl.base#Function(1-5) public static final Identifier APPLY = get("apply"); @@ -147,8 +138,6 @@ public final class Identifier implements Comparable { // members of pkl.yaml public static final Identifier MAX_COLLECTION_ALIASES = get("maxCollectionAliases"); - public static final Identifier DEPENDENCIES = get("dependencies"); - // common in lambdas etc public static final Identifier IT = get("it"); diff --git a/pkl-core/src/main/java/org/pkl/core/runtime/MathModule.java b/pkl-core/src/main/java/org/pkl/core/runtime/MathModule.java index 17576aaa..20422d9f 100644 --- a/pkl-core/src/main/java/org/pkl/core/runtime/MathModule.java +++ b/pkl-core/src/main/java/org/pkl/core/runtime/MathModule.java @@ -15,7 +15,6 @@ */ package org.pkl.core.runtime; -import com.oracle.truffle.api.CompilerDirectives; import java.net.URI; public final class MathModule extends StdLibModule { @@ -30,10 +29,4 @@ public final class MathModule extends StdLibModule { public static VmTyped getModule() { return instance; } - - @CompilerDirectives.TruffleBoundary - private static VmClass loadClass(String className) { - var theModule = getModule(); - return (VmClass) VmUtils.readMember(theModule, Identifier.get(className)); - } } diff --git a/pkl-core/src/main/java/org/pkl/core/runtime/VmClass.java b/pkl-core/src/main/java/org/pkl/core/runtime/VmClass.java index f2cb354e..b452e361 100644 --- a/pkl-core/src/main/java/org/pkl/core/runtime/VmClass.java +++ b/pkl-core/src/main/java/org/pkl/core/runtime/VmClass.java @@ -88,7 +88,7 @@ public final class VmClass extends VmValue { private final Object allHiddenPropertyNamesLock = new Object(); - // Helps to to overcome recursive initialization issues + // Helps to overcome recursive initialization issues // between classes and annotations in pkl.base. @CompilationFinal private volatile boolean isInitialized; @@ -497,7 +497,6 @@ public final class VmClass extends VmValue { public EconomicMap getDynamicToTypedMembers() { synchronized (dynamicToTypedMembersLock) { if (__dynamicToTypedMembers == null) { - //noinspection ConstantConditions __dynamicToTypedMembers = createDelegatingMembers( (member) -> @@ -515,7 +514,6 @@ public final class VmClass extends VmValue { public EconomicMap getMapToTypedMembers() { synchronized (mapToTypedMembersLock) { if (__mapToTypedMembers == null) { - //noinspection ConstantConditions __mapToTypedMembers = createDelegatingMembers( (member) -> diff --git a/pkl-core/src/main/java/org/pkl/core/runtime/VmCollection.java b/pkl-core/src/main/java/org/pkl/core/runtime/VmCollection.java index 61b90b7b..0dc660fb 100644 --- a/pkl-core/src/main/java/org/pkl/core/runtime/VmCollection.java +++ b/pkl-core/src/main/java/org/pkl/core/runtime/VmCollection.java @@ -56,6 +56,7 @@ public abstract class VmCollection extends VmValue implements Iterable { } } + @SuppressWarnings("BooleanMethodIsAlwaysInverted") public abstract boolean isLengthOne(); public final void checkLengthOne() { diff --git a/pkl-core/src/main/java/org/pkl/core/runtime/VmLanguage.java b/pkl-core/src/main/java/org/pkl/core/runtime/VmLanguage.java index 38191eaf..1a1ce9a2 100644 --- a/pkl-core/src/main/java/org/pkl/core/runtime/VmLanguage.java +++ b/pkl-core/src/main/java/org/pkl/core/runtime/VmLanguage.java @@ -21,7 +21,6 @@ import com.oracle.truffle.api.TruffleLanguage; import com.oracle.truffle.api.TruffleLanguage.ContextPolicy; import com.oracle.truffle.api.nodes.Node; import com.oracle.truffle.api.source.Source; -import org.pkl.core.SecurityManagerException; import org.pkl.core.ast.builder.AstBuilder; import org.pkl.core.ast.expression.unary.ImportNode; import org.pkl.core.module.ModuleKey; @@ -74,8 +73,7 @@ public final class VmLanguage extends TruffleLanguage { } @TruffleBoundary - public VmTyped loadModule(ModuleKey moduleKey, ImportNode importNode) - throws SecurityManagerException { + public VmTyped loadModule(ModuleKey moduleKey, ImportNode importNode) { var context = VmContext.get(null); return context diff --git a/pkl-core/src/main/java/org/pkl/core/runtime/VmMap.java b/pkl-core/src/main/java/org/pkl/core/runtime/VmMap.java index 5637b6c8..e2fa42e7 100644 --- a/pkl-core/src/main/java/org/pkl/core/runtime/VmMap.java +++ b/pkl-core/src/main/java/org/pkl/core/runtime/VmMap.java @@ -98,7 +98,9 @@ public final class VmMap extends VmValue implements Iterable next() { var key = keyIterator.next(); - return Map.entry(key, map.get(key)); + var value = map.get(key); + assert value != null; + return Map.entry(key, value); } @Override @@ -187,7 +189,9 @@ public final class VmMap extends VmValue implements Iterable { var section = VmUtils.unavailableSourceSection(); var identifier = Identifier.get(name); var member = new ObjectMember(section, section, VmModifier.NONE, identifier, name); - //noinspection ConstantConditions var node = isPropertyTypeChecked ? TypeCheckedPropertyNodeGen.create(null, new FrameDescriptor(), member, bodyNode) diff --git a/pkl-core/src/main/java/org/pkl/core/stdlib/xml/RendererNodes.java b/pkl-core/src/main/java/org/pkl/core/stdlib/xml/RendererNodes.java index 397652e8..f2a15c71 100644 --- a/pkl-core/src/main/java/org/pkl/core/stdlib/xml/RendererNodes.java +++ b/pkl-core/src/main/java/org/pkl/core/stdlib/xml/RendererNodes.java @@ -293,6 +293,7 @@ public final class RendererNodes { } else if (deferredKey instanceof String string) { writeXmlElement(string, null, value, true, true); } else { + assert deferredKey != null; cannotRenderNonStringKey(deferredKey); } } @@ -458,7 +459,7 @@ public final class RendererNodes { } private void startNewLine() { - if (builder.length() == 0) return; + if (builder.isEmpty()) return; lineNumber += 1; builder.append(LINE_BREAK).append(currIndent); diff --git a/pkl-core/src/main/java/org/pkl/core/util/IoUtils.java b/pkl-core/src/main/java/org/pkl/core/util/IoUtils.java index 375dd9a8..9849b8d8 100644 --- a/pkl-core/src/main/java/org/pkl/core/util/IoUtils.java +++ b/pkl-core/src/main/java/org/pkl/core/util/IoUtils.java @@ -527,58 +527,25 @@ public final class IoUtils { @SuppressWarnings("BooleanMethodIsAlwaysInverted") public static boolean isDecimalDigit(char ch) { - switch (ch) { - case '0': - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - return true; - default: - return false; - } + return switch (ch) { + case '0', '1', '2', '3', '4', '5', '6', '7', '8', '9' -> true; + default -> false; + }; } @SuppressWarnings("BooleanMethodIsAlwaysInverted") public static boolean isDecimalDigitOrUnderscore(char ch) { - switch (ch) { - case '0': - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - case '_': - return true; - default: - return false; - } + return switch (ch) { + case '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '_' -> true; + default -> false; + }; } public static boolean isNonZeroDecimalDigit(char ch) { - switch (ch) { - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - return true; - default: - return false; - } + return switch (ch) { + case '1', '2', '3', '4', '5', '6', '7', '8', '9' -> true; + default -> false; + }; } public static boolean isOctalDigit(char ch) { diff --git a/pkl-core/src/main/java/org/pkl/core/util/NonnullByDefault.java b/pkl-core/src/main/java/org/pkl/core/util/NonnullByDefault.java index 777b429a..b15834d2 100644 --- a/pkl-core/src/main/java/org/pkl/core/util/NonnullByDefault.java +++ b/pkl-core/src/main/java/org/pkl/core/util/NonnullByDefault.java @@ -24,13 +24,14 @@ import javax.annotation.meta.TypeQualifierDefault; /** * Indicates that method return types and method parameters in the annotated package are {@link - * org.pkl.core.util.Nonnull} unless explicitly annotated with {@link org.pkl.core.util.Nullable}. + * Nonnull} unless explicitly annotated with {@link Nullable}. * *

This annotation is a generalization of {@link javax.annotation.ParametersAreNonnullByDefault}. * All Pkl packages containing Java code should carry this annotation. * *

Ideally, this default would apply to every {@link ElementType#TYPE_USE}, but I haven't been - * able to make this work reasonably in IntelliJ (https://youtrack.jetbrains.com/issue/IDEA-278618). + * able to make this work reasonably in IntelliJ. */ @Documented @TypeQualifierDefault({ElementType.METHOD, ElementType.PARAMETER, ElementType.TYPE_PARAMETER}) diff --git a/pkl-core/src/main/java/org/pkl/core/util/StringUtils.java b/pkl-core/src/main/java/org/pkl/core/util/StringUtils.java index 898b6534..fa3c86d4 100644 --- a/pkl-core/src/main/java/org/pkl/core/util/StringUtils.java +++ b/pkl-core/src/main/java/org/pkl/core/util/StringUtils.java @@ -25,11 +25,13 @@ public final class StringUtils { // whose key property is that it maps 25 characters into the 32-slot table without collision. // Basically this is an opportunistic fast implementation as opposed to "good code". For most // other use-cases, the reduction in readability isn't worth it. + @SuppressWarnings("UnnecessaryUnicodeEscape") private static final String TABLE = "\u2002\u3000\r\u0085\u200A\u2005\u2000\u3000" + "\u2029\u000B\u3000\u2008\u2003\u205F\u3000\u1680" + "\u0009\u0020\u2006\u2001\u202F\u00A0\u000C\u2009" + "\u3000\u2004\u3000\u3000\u2028\n\u2007\u3000"; + private static final int MULTIPLIER = 1682554634; private static final int SHIFT = Integer.numberOfLeadingZeros(TABLE.length() - 1); diff --git a/pkl-core/src/main/java/org/pkl/core/util/json/JsonParser.java b/pkl-core/src/main/java/org/pkl/core/util/json/JsonParser.java index 55cab98e..40dc3e50 100644 --- a/pkl-core/src/main/java/org/pkl/core/util/json/JsonParser.java +++ b/pkl-core/src/main/java/org/pkl/core/util/json/JsonParser.java @@ -397,7 +397,7 @@ public final class JsonParser { var start = captureStart; var end = index - 1; captureStart = -1; - if (captureBuffer.length() > 0) { + if (!captureBuffer.isEmpty()) { captureBuffer.append(buffer, start, end - start); var captured = captureBuffer.toString(); captureBuffer.setLength(0); diff --git a/pkl-core/src/main/java/org/pkl/core/util/json/JsonWriter.java b/pkl-core/src/main/java/org/pkl/core/util/json/JsonWriter.java index dfe48b35..ba36bc28 100644 --- a/pkl-core/src/main/java/org/pkl/core/util/json/JsonWriter.java +++ b/pkl-core/src/main/java/org/pkl/core/util/json/JsonWriter.java @@ -201,7 +201,7 @@ public class JsonWriter implements Closeable, Flushable { * @param indent a string containing only whitespace. */ public final void setIndent(String indent) { - if (indent.length() == 0) { + if (indent.isEmpty()) { this.indent = null; this.separator = ":"; } else { diff --git a/pkl-core/src/main/java/org/pkl/core/util/xml/Xml10Validator.java b/pkl-core/src/main/java/org/pkl/core/util/xml/Xml10Validator.java index 9f8398b2..c079355e 100644 --- a/pkl-core/src/main/java/org/pkl/core/util/xml/Xml10Validator.java +++ b/pkl-core/src/main/java/org/pkl/core/util/xml/Xml10Validator.java @@ -17,10 +17,8 @@ package org.pkl.core.util.xml; import java.util.Arrays; -/** - * Originally taken from: - * https://github.com/apache/xerces2-j/blob/8ce366ce9a20e7ffcb1dd37d0c4b5663d65b1f7d/src/org/apache/xerces/util/XMLChar.java - */ +// Originally taken from: +// https://github.com/apache/xerces2-j/blob/8ce366ce9a20e7ffcb1dd37d0c4b5663d65b1f7d/src/org/apache/xerces/util/XMLChar.java @SuppressWarnings("BooleanMethodIsAlwaysInverted") final class Xml10Validator extends XmlValidator { private static final byte[] CHARS = new byte[1 << 16]; diff --git a/pkl-core/src/main/java/org/pkl/core/util/xml/Xml11Validator.java b/pkl-core/src/main/java/org/pkl/core/util/xml/Xml11Validator.java index d73fbfa0..a8219d8d 100644 --- a/pkl-core/src/main/java/org/pkl/core/util/xml/Xml11Validator.java +++ b/pkl-core/src/main/java/org/pkl/core/util/xml/Xml11Validator.java @@ -17,10 +17,8 @@ package org.pkl.core.util.xml; import java.util.Arrays; -/** - * Originally taken from: - * https://github.com/apache/xerces2-j/blob/8ce366ce9a20e7ffcb1dd37d0c4b5663d65b1f7d/src/org/apache/xerces/util/XML11Char.java - */ +// Originally taken from: +// https://github.com/apache/xerces2-j/blob/8ce366ce9a20e7ffcb1dd37d0c4b5663d65b1f7d/src/org/apache/xerces/util/XML11Char.java @SuppressWarnings("BooleanMethodIsAlwaysInverted") final class Xml11Validator extends XmlValidator { private static final byte[] CHARS = new byte[1 << 16]; diff --git a/pkl-core/src/main/java/org/pkl/core/util/yaml/YamlEscaper.java b/pkl-core/src/main/java/org/pkl/core/util/yaml/YamlEscaper.java index 201e078b..00120d48 100644 --- a/pkl-core/src/main/java/org/pkl/core/util/yaml/YamlEscaper.java +++ b/pkl-core/src/main/java/org/pkl/core/util/yaml/YamlEscaper.java @@ -43,6 +43,7 @@ public final class YamlEscaper extends AbstractCharEscaper { @Override protected @Nullable String findReplacement(char ch) { + //noinspection UnnecessaryUnicodeEscape return ch <= '\u0022' ? REPLACEMENTS[ch] : ch == '\u2028' ? "\\L" : ch == '\u2029' ? "\\P" : null; diff --git a/pkl-core/src/main/resources/org/pkl/core/errorMessages.properties b/pkl-core/src/main/resources/org/pkl/core/errorMessages.properties index 2a30c404..865acf3b 100644 --- a/pkl-core/src/main/resources/org/pkl/core/errorMessages.properties +++ b/pkl-core/src/main/resources/org/pkl/core/errorMessages.properties @@ -31,12 +31,6 @@ A for-generator cannot generate object properties (only entries and elements). forGeneratorCannotGenerateMethods=\ A for-generator cannot generate object methods (only entries and elements). -legacyForGeneratorCannotHaveTwoVars=\ -A legacy for-generator cannot have two for-variables.\n\ -\n\ -The correct syntax for a for-generator with two for-variables is:\n\ -for (key, value in iterable) { ... } - cannotIterateOverThisValue=\ Cannot iterate over value of type `{0}`. @@ -92,13 +86,6 @@ Instead, instantiate a concrete subclass. cannotInstantiateType=\ Cannot instantiate type `{0}`. -cannotAmendValueOfExternalClass=\ -Cannot amend value of external class `{0}`.\n\ -\n\ -Values of external classes cannot be amended.\n\ -Instead, create a new value using the class'' literal syntax or constructor method.\n\ -For example, `123` creates a value of class `Int`, and `Pair(1, 2)` creates a value of class `Pair`. - cannotAmendPropertyDefinition=\ A property definition cannot be amended.\n\ \n\ @@ -135,6 +122,7 @@ Cannot amend fixed property `{0}`. cannotAssignConstProperty=\ Cannot assign to const property `{0}`. +# suppress inspection "UnusedProperty" cannotAmendConstProperty=\ Cannot amend const property `{0}`. @@ -479,9 +467,6 @@ Undefined value. undefinedPropertyValue=\ Tried to read property `{0}` but its value is undefined. -unreachableCode=\ -This code should not have been reached. - cannotFindModule=\ Cannot find module `{0}`. @@ -542,9 +527,6 @@ Cannot convert Float `{0}` to Int because it is too large. cannotConvertNonFiniteFloat=\ Cannot convert non-finite Float `{0}` to Int. -cannotConvertMapWithNonStringKeyToTyped=\ -Cannot convert map with non-string key to typed object. - intValueTooLarge=\ Int value `{0}` is too large (only Int32 supported here). @@ -560,15 +542,9 @@ Cannot combine glob imports with triple-dot module URIs. cannotGlobUri=\ Cannot expand glob pattern `{0}` because scheme `{1}` is not globbable. -expectedAClass=\ -Expected a class, but got a value of type `{0}`. - expectedAnnotationClass=\ Expected an annotation class. -expectedAClassButGotNull=\ -Expected a class, but got `null`. - expectedNonNullValue=\ Expected a non-null value, but got `null`. @@ -665,10 +641,6 @@ For example: `package://example.com/my/project@1.0.0#/path/to/file.pkl`. invalidResourceUri=\ Resource URI `{0}` has invalid syntax. -# used as {1} in invalidModuleUri and invalidResourceUri -invalidUriFormat=\ -must match pattern `{0}` - invalidGlobPattern=\ Invalid glob pattern `{0}`. diff --git a/pkl-executor/src/main/java/org/pkl/executor/Version.java b/pkl-executor/src/main/java/org/pkl/executor/Version.java index 909751d1..748bd24b 100644 --- a/pkl-executor/src/main/java/org/pkl/executor/Version.java +++ b/pkl-executor/src/main/java/org/pkl/executor/Version.java @@ -19,7 +19,7 @@ import java.util.*; import java.util.regex.Pattern; /** - * A semantic version (https://semver.org/spec/v2.0.0.html). + * A semantic version. * *

This class guarantees that valid semantic version numbers are handled correctly, but does * not guarantee that invalid semantic version numbers are rejected. @@ -212,8 +212,7 @@ final class Version implements Comparable { @Override public String toString() { - return "" - + major + return major + "." + minor + "." diff --git a/pkl-gradle/src/main/java/org/pkl/gradle/PklPlugin.java b/pkl-gradle/src/main/java/org/pkl/gradle/PklPlugin.java index e1f8645a..a3ec76fa 100644 --- a/pkl-gradle/src/main/java/org/pkl/gradle/PklPlugin.java +++ b/pkl-gradle/src/main/java/org/pkl/gradle/PklPlugin.java @@ -398,7 +398,7 @@ public class PklPlugin implements Plugin { var outputDir = spec.getOutputDir().get().getAsFile(); module.getGeneratedSourceDirs().add(outputDir); if (spec.getSourceSet().get().getName().toLowerCase().contains("test")) { - module.setTestSourceDirs(append(module.getTestSourceDirs(), outputDir)); + module.getTestSources().from(append(module.getTestSources().getFiles(), outputDir)); } else { module.setSourceDirs(append(module.getSourceDirs(), outputDir)); } @@ -476,7 +476,9 @@ public class PklPlugin implements Plugin { try { var getConventionMethod = sourceSet.getClass().getMethod("getConvention"); var convention = getConventionMethod.invoke(sourceSet); + //noinspection deprecation if (convention instanceof Convention c) { + //noinspection deprecation var kotlinSourceSet = c.getPlugins().get("kotlin"); if (kotlinSourceSet == null) { project