Skip to content

Commit

Permalink
disallow duplicate structure members
Browse files Browse the repository at this point in the history
  • Loading branch information
MESYETI committed Apr 26, 2024
1 parent 2dfdb7b commit 181e9af
Show file tree
Hide file tree
Showing 2 changed files with 14 additions and 0 deletions.
7 changes: 7 additions & 0 deletions source/backends/linux86.d
Original file line number Diff line number Diff line change
Expand Up @@ -501,12 +501,19 @@ class BackendLinux86 : CompilerBackend {
Error(node.error, "Type '%s' defined multiple times", node.name);
}

string[] members;

foreach (i, ref name ; node.names) {
auto type = node.types[i];

if (type !in types) {
Error(node.error, "Type '%s' doesn't exist", type);
}
if (members.canFind(name)) {
Error(node.error, "Duplicate member '%s'", name);
}

members ~= name;

NewConst(format("%s.%s", node.name, name), offset);
offset += types[type].size;
Expand Down
7 changes: 7 additions & 0 deletions source/backends/rm86.d
Original file line number Diff line number Diff line change
Expand Up @@ -463,12 +463,19 @@ class BackendRM86 : CompilerBackend {
Error(node.error, "Type '%s' defined multiple times", node.name);
}

string[] members;

foreach (i, ref name ; node.names) {
auto type = node.types[i];

if (type !in types) {
Error(node.error, "Type '%s' doesn't exist", type);
}
if (members.canFind(name)) {
Error(node.error, "Duplicate member '%s'", name);
}

members ~= name;

NewConst(format("%s.%s", node.name, name), offset);
offset += types[type].size;
Expand Down

0 comments on commit 181e9af

Please sign in to comment.