Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
360 changes: 180 additions & 180 deletions docs/evidence/safety-type-inventory.json

Large diffs are not rendered by default.

282 changes: 141 additions & 141 deletions docs/evidence/scorecard.json
Original file line number Diff line number Diff line change
Expand Up @@ -145,81 +145,81 @@
"src/check.rs:1133",
"src/check.rs:1150",
"src/check.rs:1171",
"src/check.rs:1280",
"src/check.rs:1281",
"src/check.rs:1283",
"src/check.rs:1284",
"src/check.rs:1288",
"src/check.rs:1294",
"src/check.rs:1300",
"src/check.rs:1303",
"src/check.rs:1306",
"src/check.rs:1307",
"src/check.rs:1331",
"src/check.rs:1335",
"src/check.rs:1388",
"src/check.rs:1401",
"src/check.rs:1402",
"src/check.rs:1407",
"src/check.rs:1408",
"src/check.rs:1409",
"src/check.rs:1410",
"src/check.rs:1411",
"src/check.rs:1412",
"src/check.rs:1413",
"src/check.rs:1309",
"src/check.rs:1310",
"src/check.rs:1314",
"src/check.rs:1320",
"src/check.rs:1326",
"src/check.rs:1329",
"src/check.rs:1333",
"src/check.rs:1357",
"src/check.rs:1361",
"src/check.rs:1414",
"src/check.rs:1415",
"src/check.rs:1416",
"src/check.rs:1417",
"src/check.rs:1418",
"src/check.rs:1419",
"src/check.rs:1420",
"src/check.rs:1422",
"src/check.rs:1424",
"src/check.rs:1425",
"src/check.rs:1426",
"src/check.rs:1427",
"src/check.rs:1428",
"src/check.rs:1429",
"src/check.rs:1430",
"src/check.rs:1431",
"src/check.rs:1432",
"src/check.rs:1433",
"src/check.rs:1434",
"src/check.rs:1435",
"src/check.rs:1436",
"src/check.rs:1437",
"src/check.rs:1438",
"src/check.rs:1439",
"src/check.rs:1440",
"src/check.rs:1441",
"src/check.rs:1442",
"src/check.rs:1443",
"src/check.rs:1444",
"src/check.rs:1445",
"src/check.rs:1446",
"src/check.rs:1448",
"src/check.rs:1450",
"src/check.rs:1451",
"src/check.rs:1452",
"src/check.rs:1453",
"src/check.rs:1454",
"src/check.rs:1455",
"src/check.rs:1456",
"src/check.rs:1457",
"src/check.rs:1458",
"src/check.rs:1459",
"src/check.rs:1460",
"src/check.rs:1461",
"src/check.rs:1462",
"src/check.rs:1464",
"src/check.rs:1463",
"src/check.rs:1465",
"src/check.rs:1466",
"src/check.rs:1467",
"src/check.rs:1468",
"src/check.rs:1469",
"src/check.rs:1470",
"src/check.rs:1473",
"src/check.rs:1476",
"src/check.rs:1478",
"src/check.rs:1471",
"src/check.rs:1480",
"src/check.rs:1481",
"src/check.rs:1482",
"src/check.rs:1483",
"src/check.rs:1484",
"src/check.rs:1485",
"src/check.rs:1488",
"src/check.rs:1490",
"src/check.rs:1491",
"src/check.rs:1492",
"src/check.rs:1493",
"src/check.rs:1500",
"src/check.rs:1501",
"src/check.rs:1495",
"src/check.rs:1496",
"src/check.rs:1499",
"src/check.rs:1502",
"src/check.rs:1504",
"src/check.rs:1505",
"src/check.rs:1507",
"src/check.rs:1509",
"src/check.rs:1510",
"src/check.rs:1511",
"src/check.rs:1518",
"src/check.rs:1519",
"src/check.rs:1526",
"src/check.rs:1527",
"src/check.rs:1530",
"src/check.rs:1531",
"src/compile.rs:126",
"src/compile.rs:127",
"src/compile.rs:129",
Expand Down Expand Up @@ -271,111 +271,111 @@
"src/eval.rs:273",
"src/eval.rs:444",
"src/eval.rs:460",
"src/eval.rs:543",
"src/eval.rs:565",
"src/eval.rs:665",
"src/eval.rs:940",
"src/eval.rs:941",
"src/eval.rs:950",
"src/eval.rs:954",
"src/eval.rs:960",
"src/eval.rs:560",
"src/eval.rs:582",
"src/eval.rs:682",
"src/eval.rs:957",
"src/eval.rs:958",
"src/eval.rs:967",
"src/eval.rs:971",
"src/eval.rs:982",
"src/eval.rs:1004",
"src/eval.rs:1005",
"src/eval.rs:1010",
"src/eval.rs:1011",
"src/eval.rs:1019",
"src/eval.rs:1020",
"src/eval.rs:1025",
"src/eval.rs:1026",
"src/eval.rs:1034",
"src/eval.rs:1040",
"src/eval.rs:977",
"src/eval.rs:984",
"src/eval.rs:988",
"src/eval.rs:999",
"src/eval.rs:1021",
"src/eval.rs:1022",
"src/eval.rs:1027",
"src/eval.rs:1028",
"src/eval.rs:1036",
"src/eval.rs:1037",
"src/eval.rs:1042",
"src/eval.rs:1043",
"src/eval.rs:1055",
"src/eval.rs:1100",
"src/eval.rs:1142",
"src/eval.rs:1181",
"src/eval.rs:1209",
"src/eval.rs:1210",
"src/eval.rs:1217",
"src/eval.rs:1250",
"src/eval.rs:1259",
"src/eval.rs:1260",
"src/eval.rs:1268",
"src/eval.rs:1278",
"src/eval.rs:1478",
"src/eval.rs:1493",
"src/eval.rs:1503",
"src/eval.rs:1051",
"src/eval.rs:1057",
"src/eval.rs:1060",
"src/eval.rs:1072",
"src/eval.rs:1117",
"src/eval.rs:1159",
"src/eval.rs:1198",
"src/eval.rs:1226",
"src/eval.rs:1227",
"src/eval.rs:1234",
"src/eval.rs:1267",
"src/eval.rs:1276",
"src/eval.rs:1277",
"src/eval.rs:1285",
"src/eval.rs:1295",
"src/eval.rs:1495",
"src/eval.rs:1510",
"src/eval.rs:1520",
"src/eval.rs:1529",
"src/eval.rs:1552",
"src/eval.rs:1561",
"src/eval.rs:1537",
"src/eval.rs:1546",
"src/eval.rs:1569",
"src/eval.rs:1578",
"src/eval.rs:1588",
"src/eval.rs:1612",
"src/eval.rs:1635",
"src/eval.rs:1644",
"src/eval.rs:1669",
"src/eval.rs:1679",
"src/eval.rs:1684",
"src/eval.rs:1704",
"src/eval.rs:1722",
"src/eval.rs:1748",
"src/eval.rs:1762",
"src/eval.rs:1781",
"src/eval.rs:1787",
"src/eval.rs:1788",
"src/eval.rs:1813",
"src/eval.rs:1824",
"src/eval.rs:1850",
"src/eval.rs:1880",
"src/eval.rs:1881",
"src/eval.rs:1890",
"src/eval.rs:1933",
"src/eval.rs:1934",
"src/eval.rs:1944",
"src/eval.rs:2011",
"src/eval.rs:2014",
"src/eval.rs:2015",
"src/eval.rs:2021",
"src/eval.rs:2030",
"src/eval.rs:2036",
"src/eval.rs:2042",
"src/eval.rs:2186",
"src/eval.rs:2274",
"src/eval.rs:2322",
"src/eval.rs:2323",
"src/eval.rs:2336",
"src/eval.rs:2347",
"src/eval.rs:2357",
"src/eval.rs:2358",
"src/eval.rs:2381",
"src/eval.rs:1595",
"src/eval.rs:1605",
"src/eval.rs:1629",
"src/eval.rs:1652",
"src/eval.rs:1661",
"src/eval.rs:1686",
"src/eval.rs:1696",
"src/eval.rs:1701",
"src/eval.rs:1721",
"src/eval.rs:1739",
"src/eval.rs:1765",
"src/eval.rs:1779",
"src/eval.rs:1798",
"src/eval.rs:1804",
"src/eval.rs:1805",
"src/eval.rs:1830",
"src/eval.rs:1841",
"src/eval.rs:1867",
"src/eval.rs:1897",
"src/eval.rs:1898",
"src/eval.rs:1907",
"src/eval.rs:1950",
"src/eval.rs:1951",
"src/eval.rs:1961",
"src/eval.rs:2028",
"src/eval.rs:2031",
"src/eval.rs:2032",
"src/eval.rs:2038",
"src/eval.rs:2047",
"src/eval.rs:2053",
"src/eval.rs:2059",
"src/eval.rs:2203",
"src/eval.rs:2291",
"src/eval.rs:2339",
"src/eval.rs:2340",
"src/eval.rs:2353",
"src/eval.rs:2364",
"src/eval.rs:2374",
"src/eval.rs:2375",
"src/eval.rs:2398",
"src/eval.rs:2405",
"src/eval.rs:2453",
"src/eval.rs:2455",
"src/eval.rs:2474",
"src/eval.rs:2478",
"src/eval.rs:2482",
"src/eval.rs:2485",
"src/eval.rs:2486",
"src/eval.rs:2490",
"src/eval.rs:2415",
"src/eval.rs:2422",
"src/eval.rs:2470",
"src/eval.rs:2472",
"src/eval.rs:2491",
"src/eval.rs:2492",
"src/eval.rs:2505",
"src/eval.rs:2495",
"src/eval.rs:2499",
"src/eval.rs:2502",
"src/eval.rs:2503",
"src/eval.rs:2507",
"src/eval.rs:2508",
"src/eval.rs:2531",
"src/eval.rs:2536",
"src/eval.rs:2546",
"src/eval.rs:2547",
"src/eval.rs:2556",
"src/eval.rs:2558",
"src/eval.rs:2559",
"src/eval.rs:2566",
"src/eval.rs:2568",
"src/eval.rs:2570",
"src/eval.rs:2509",
"src/eval.rs:2522",
"src/eval.rs:2525",
"src/eval.rs:2548",
"src/eval.rs:2553",
"src/eval.rs:2563",
"src/eval.rs:2564",
"src/eval.rs:2573",
"src/eval.rs:2575",
"src/eval.rs:2576",
"src/eval.rs:2583",
"src/eval.rs:2585",
"src/eval.rs:2587",
"src/fasthash.rs:37",
"src/fasthash.rs:42",
"src/fmt.rs:87",
Expand Down Expand Up @@ -670,8 +670,8 @@
},
"corpus": {
"errors": 7,
"programs": 30,
"total": 37
"programs": 31,
"total": 38
},
"phase": 0,
"schema_version": 1,
Expand Down
28 changes: 27 additions & 1 deletion src/check.rs
Original file line number Diff line number Diff line change
Expand Up @@ -1252,9 +1252,35 @@ impl Checker {
}
self.diags.extend(resolver.diags);
let namespace = canonical.to_string_lossy().into_owned();
self.module_cache
.insert(canonical.clone(), (hash.clone(), members.clone()));
self.module_members
.insert(namespace.clone(), members.clone());
self.module_loading.pop();

// Check imported code in isolated lexical scopes. Interfaces already
// cached above make nested imports deterministic and avoid execution.
let mut validator = Checker::new();
validator.module_cache = self.module_cache.clone();
validator.module_members = self.module_members.clone();
validator.check_file_at(&file, &canonical);
for item in &file.items {
if let TopItem::Let(binding) = item {
if let Some((ty, _)) = validator.lookup(&binding.name) {
members.insert(binding.name.clone(), ty);
}
}
}
for diag in validator.diags {
self.diags.push(Diag {
code: "E0033",
msg: format!("in imported '{}': {}", import, diag.msg),
line: span.line,
col: span.col,
});
}
self.module_cache.insert(canonical, (hash, members.clone()));
self.module_members.insert(namespace.clone(), members);
self.module_loading.pop();
Some(namespace)
}

Expand Down
Loading