Skip to content

Commit dc7c8b2

Browse files
committed
don't use std::map
1 parent 845459d commit dc7c8b2

File tree

3 files changed

+29
-23
lines changed

3 files changed

+29
-23
lines changed

lute/cli/include/lute/staticrequires.h

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,15 @@
11
#pragma once
22

3+
#include "Luau/DenseHash.h"
4+
5+
#include <optional>
36
#include <string>
47
#include <vector>
5-
#include <set>
6-
#include <map>
7-
#include <optional>
88

99
class StaticRequireTracer
1010
{
1111
public:
12-
StaticRequireTracer() = default;
12+
StaticRequireTracer();
1313

1414
// Trace dependencies starting from an entry point file
1515
// rootDirectory: Base directory for resolving all requires
@@ -19,12 +19,12 @@ class StaticRequireTracer
1919

2020
// Get the require graph built during the last trace
2121
// Maps each file to the list of files it requires
22-
const std::map<std::string, std::vector<std::string>>& getRequireGraph() const { return requireGraph; }
22+
const Luau::DenseHashMap<std::string, std::vector<std::string>>& getRequireGraph() const { return requireGraph; }
2323

2424
private:
25-
std::set<std::string> visited;
25+
Luau::DenseHashSet<std::string> visited{""};
2626
std::vector<std::string> discovered;
27-
std::map<std::string, std::vector<std::string>> requireGraph;
27+
Luau::DenseHashMap<std::string, std::vector<std::string>> requireGraph{""};
2828
std::string rootDirectory;
2929

3030
// Extract all require() paths from source code

lute/cli/src/staticrequires.cpp

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,8 @@
88
#include <cstdio>
99
#include <queue>
1010

11+
StaticRequireTracer::StaticRequireTracer() = default;
12+
1113
// AST visitor to extract require() calls
1214
class RequireExtractor : public Luau::AstVisitor
1315
{
@@ -50,7 +52,7 @@ std::vector<std::string> StaticRequireTracer::trace(const std::string& rootDirec
5052
std::string absPath = normalizePath(fullPath);
5153

5254
// Skip if already visited (handles circular dependencies)
53-
if (visited.count(absPath))
55+
if (visited.contains(absPath))
5456
continue;
5557

5658
visited.insert(absPath);

tests/src/staticrequires.test.cpp

Lines changed: 19 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -100,25 +100,29 @@ TEST_CASE("staticrequiretracer_require_graph")
100100
const auto& graph = tracer.getRequireGraph();
101101

102102
// main.luau should require utils.luau and lib/helper.luau
103-
REQUIRE(graph.count("main.luau") == 1);
104-
const auto& mainDeps = graph.at("main.luau");
105-
REQUIRE(mainDeps.size() == 2);
106-
CHECK(std::find(mainDeps.begin(), mainDeps.end(), "utils.luau") != mainDeps.end());
107-
CHECK(std::find(mainDeps.begin(), mainDeps.end(), "lib/helper.luau") != mainDeps.end());
103+
REQUIRE(graph.contains("main.luau"));
104+
const auto* mainDeps = graph.find("main.luau");
105+
REQUIRE(mainDeps != nullptr);
106+
REQUIRE(mainDeps->size() == 2);
107+
CHECK(std::find(mainDeps->begin(), mainDeps->end(), "utils.luau") != mainDeps->end());
108+
CHECK(std::find(mainDeps->begin(), mainDeps->end(), "lib/helper.luau") != mainDeps->end());
108109

109110
// lib/helper.luau should require shared.luau
110-
REQUIRE(graph.count("lib/helper.luau") == 1);
111-
const auto& helperDeps = graph.at("lib/helper.luau");
112-
REQUIRE(helperDeps.size() == 1);
113-
CHECK(helperDeps[0] == "shared.luau");
111+
REQUIRE(graph.contains("lib/helper.luau"));
112+
const auto* helperDeps = graph.find("lib/helper.luau");
113+
REQUIRE(helperDeps != nullptr);
114+
REQUIRE(helperDeps->size() == 1);
115+
CHECK((*helperDeps)[0] == "shared.luau");
114116

115117
// utils.luau should have no dependencies
116-
REQUIRE(graph.count("utils.luau") == 1);
117-
const auto& utilsDeps = graph.at("utils.luau");
118-
CHECK(utilsDeps.empty());
118+
REQUIRE(graph.contains("utils.luau"));
119+
const auto* utilsDeps = graph.find("utils.luau");
120+
REQUIRE(utilsDeps != nullptr);
121+
CHECK(utilsDeps->empty());
119122

120123
// shared.luau should have no dependencies
121-
REQUIRE(graph.count("shared.luau") == 1);
122-
const auto& sharedDeps = graph.at("shared.luau");
123-
CHECK(sharedDeps.empty());
124+
REQUIRE(graph.contains("shared.luau"));
125+
const auto* sharedDeps = graph.find("shared.luau");
126+
REQUIRE(sharedDeps != nullptr);
127+
CHECK(sharedDeps->empty());
124128
}

0 commit comments

Comments
 (0)