Skip to content

Commit

Permalink
Merge e44be08 into 5a888d4
Browse files Browse the repository at this point in the history
  • Loading branch information
laurentlb authored Jun 3, 2021
2 parents 5a888d4 + e44be08 commit 23bc4fa
Show file tree
Hide file tree
Showing 2 changed files with 16 additions and 16 deletions.
26 changes: 13 additions & 13 deletions src/renamer.fs
Original file line number Diff line number Diff line change
Expand Up @@ -144,6 +144,15 @@ module private RenamerImpl =
let l = env.reusableNames |> List.filter (fun x -> x.[0] <> newName.[0])
{env with varRenames = Map.add id newName env.varRenames; reusableNames = l}, newName

let dontRename env name =
let names = env.reusableNames |> List.filter ((<>) name)
{env with varRenames = env.varRenames.Add(name, name); reusableNames = names}

let dontRenameList env names =
let mutable env = env
for name in names do env <- dontRename env name
env

let renFunction env nbArgs id =
if List.exists ((=) id) options.noRenamingList then env, id // don't rename "main"
else
Expand Down Expand Up @@ -200,7 +209,7 @@ module private RenamerImpl =
| None -> false
if isTopLevel && (ext || options.hlsl || options.preserveAllGlobals) then
if options.preserveExternals then
{env with reusableNames = List.filter ((<>)decl.name) env.reusableNames}, decl.name
dontRename env decl.name, decl.name
else
let env, newName = env.newName env decl.name
Formatter.export "" decl.name newName // TODO: first argument seems now useless
Expand Down Expand Up @@ -231,9 +240,9 @@ module private RenamerImpl =
| e -> e
mapStmt (mapEnv collect id) block |> ignore
let set = HashSet(Seq.choose env.varRenames.TryFind d)
let varRenames, availableNames = Map.partition (fun _ id -> set.Contains id) env.varRenames
let varRenames, availableNames = env.varRenames |> Map.partition (fun _ id -> id.Length > 2 || set.Contains id)
let availableNames = availableNames |> Seq.filter (fun x -> not (List.exists ((=) x.Value) options.noRenamingList))
let merged = [for i in availableNames -> i.Value] @ env.reusableNames |> Seq.distinct |> Seq.toList // |> List.sort
let merged = [for i in availableNames -> i.Value] @ env.reusableNames |> Seq.distinct |> Seq.toList
{env with varRenames=varRenames; reusableNames=merged}

let rec renStmt env =
Expand Down Expand Up @@ -286,18 +295,9 @@ module private RenamerImpl =
Function({fct with args=args}, body)
| e -> e

// Remove the values from the env
// so that the functions are not overloaded
let rec doNotOverload env = function
| [] -> env
| name::li ->
let names = env.reusableNames |> List.filter ((<>) name)
let env = {env with varRenames = Map.add name name env.varRenames; reusableNames = names}
doNotOverload env li

let renameTopLevel li env =
// Rename top-level values first
let env = doNotOverload env options.noRenamingList
let env = dontRenameList env options.noRenamingList
let env, li = renList env renTopLevelName li

// Then, rename local values
Expand Down
6 changes: 3 additions & 3 deletions tests/unit/externals.preserved.expected
Original file line number Diff line number Diff line change
Expand Up @@ -8,17 +8,17 @@ const char *externals_frag =
"uniform int i,n,e;"
"int t()"
"{"
"int t,r,u,o,m;"
"int n,e,t,r,u;"
"return i;"
"}"
"int r()"
"{"
"int t,r,u,o,m;"
"int i,e,t,r,u;"
"return n;"
"}"
"int u()"
"{"
"int t,r,u,o,m;"
"int i,t,r,n,u;"
"return e;"
"}";

Expand Down

0 comments on commit 23bc4fa

Please sign in to comment.