UNPKG

@specs-feup/clava

Version:

A C/C++ source-to-source compiler written in Typescript

22 lines (17 loc) 602 B
import { FunctionJp, Vardecl } from "../../Joinpoints.js"; export default function RemoveShadowing($function: FunctionJp): void { const usedNames = new Set(); let aliasIndex = 0; for (const $param of $function.params) { usedNames.add($param.name); } for (const $jp of $function.body.getDescendants("vardecl")) { const $vardecl = $jp as Vardecl; if (usedNames.has($vardecl.name)) { // TODO: ensure the new name is not part of the usedNames const newName = `${$vardecl.name}_${aliasIndex++}`; $vardecl.name = newName; usedNames.add(newName); } } }