/* * Copyright 2025 the original author or authors. *
* Licensed under the Moderne Source Available License (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at *
* https://docs.moderne.io/licensing/moderne-source-available-license *
* 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.
*/
import {Recipe} from "../../recipe";
import {TreeVisitor} from "../../visitor";
import {ExecutionContext} from "../../execution";
import {JavaScriptVisitor} from "../visitor";
import {J, singleSpace} from "../../java";
import {emptyMarkers} from "../../markers";
import {randomId} from "../../uuid";
/**
* Adds the radix parameter to parseInt() calls when missing.
*
* The radix parameter specifies the base of the numeral system to use.
* Without it, parseInt can produce unexpected results:
* - parseInt("08") was 0 in older JavaScript (octal interpretation)
* - Modern JavaScript defaults to base 10, but explicit radix is clearer
*
* Examples:
* - `parseInt(x)` becomes `parseInt(x, 10)`
* - `parseInt(str)` becomes `parseInt(str, 10)`
*/
export class AddParseIntRadix extends Recipe {
name = "org.openrewrite.javascript.cleanup.add-parse-int-radix";
displayName = "Add radix to `parseInt`";
description = "Adds the radix parameter (base 10) to `parseInt()` calls that are missing it, preventing potential parsing issues.";
async editor(): Promise