From fda21281e81f73ee1eee4654171e5aef2dd958be Mon Sep 17 00:00:00 2001 From: Radith Samarakoon Date: Thu, 9 May 2024 13:53:37 +0530 Subject: [PATCH] Use string builder for efficiency --- .../cli/diagnostics/AnnotateDiagnostics.java | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/cli/ballerina-cli/src/main/java/io/ballerina/cli/diagnostics/AnnotateDiagnostics.java b/cli/ballerina-cli/src/main/java/io/ballerina/cli/diagnostics/AnnotateDiagnostics.java index 1f7f8bba233d..724cafffcec5 100644 --- a/cli/ballerina-cli/src/main/java/io/ballerina/cli/diagnostics/AnnotateDiagnostics.java +++ b/cli/ballerina-cli/src/main/java/io/ballerina/cli/diagnostics/AnnotateDiagnostics.java @@ -199,20 +199,20 @@ private DiagnosticAnnotation getMissingTokenAnnotation(PackageDiagnostic package String color) { StringDiagnosticProperty strProperty = (StringDiagnosticProperty) packageDiagnostic.properties().get(0); String lineString = textDocument.line(locationDetails.startLine).text(); - String missingTokenString = getColoredString(strProperty.value(), color, isColorEnabled); + StringBuilder lineBuilder = new StringBuilder().append(lineString, 0, locationDetails.startOffset); + StringBuilder missingTokenBuilder = + new StringBuilder(getColoredString(strProperty.value(), color, isColorEnabled)); int padding = 0; if (locationDetails.startOffset < lineString.length() && lineString.charAt(locationDetails.startOffset) != ' ') { - missingTokenString = missingTokenString + " "; + missingTokenBuilder.append(" "); } if (locationDetails.startOffset > 0 && lineString.charAt(locationDetails.startOffset - 1) != ' ') { - missingTokenString = " " + missingTokenString; + missingTokenBuilder.insert(0, " "); padding++; } - - String lineWithMissingToken = lineString.substring(0, locationDetails.startOffset) + missingTokenString + - lineString.substring(locationDetails.startOffset); // TODO: Use a string builder instead - List lines = new ArrayList<>(List.of(lineWithMissingToken)); + lineBuilder.append(missingTokenBuilder).append(lineString, locationDetails.startOffset, lineString.length()); + List lines = new ArrayList<>(List.of(lineBuilder.toString())); return new DiagnosticAnnotation( lines, padding + locationDetails.startOffset, @@ -231,8 +231,7 @@ private DiagnosticAnnotation getInvalidTokenAnnotation(TextDocument textDocument String line = lines.get(0); String annotatedLine = line.substring(0, locationDetails.startOffset) + getColoredString(line.substring(locationDetails.startOffset, locationDetails.endOffset), color, - isColorEnabled) + - line.substring(locationDetails.endOffset); + isColorEnabled) + line.substring(locationDetails.endOffset); lines.set(0, annotatedLine); return new DiagnosticAnnotation( lines,