11 changes: 6 additions & 5 deletions src/expression.c
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,7 @@ bool typeMerge(Scope *sc, TOK op, Type **pt, Expression **pe1, Expression **pe2)
bool isArrayOpValid(Expression *e);
Expression *expandVar(int result, VarDeclaration *v);
TypeTuple *toArgTypes(Type *t);
bool checkAccess(AggregateDeclaration *ad, Loc loc, Scope *sc, Dsymbol *smember);
bool checkFrameAccess(Loc loc, Scope *sc, AggregateDeclaration *ad, size_t istart = 0);
Symbol *toInitializer(AggregateDeclaration *ad);
Type *getTypeInfoType(Type *t, Scope *sc);
Expand Down Expand Up @@ -2666,7 +2667,7 @@ bool Expression::checkPostblit(Scope *sc, Type *t)
checkPurity(sc, sd->postblit);
checkSafety(sc, sd->postblit);
checkNogc(sc, sd->postblit);
//checkAccess(loc, sc, NULL, sd->postblit); // necessary?
//checkAccess(sd, loc, sc, sd->postblit); // necessary?
return false;
}
}
Expand Down Expand Up @@ -4955,7 +4956,7 @@ Expression *NewExp::semantic(Scope *sc)
checkPurity(sc, f);
checkSafety(sc, f);
checkNogc(sc, f);
checkAccess(loc, sc, NULL, f);
checkAccess(cd, loc, sc, f);

TypeFunction *tf = (TypeFunction *)f->type;
Type *rettype;
Expand Down Expand Up @@ -4983,7 +4984,7 @@ Expression *NewExp::semantic(Scope *sc)
checkPurity(sc, f);
checkSafety(sc, f);
checkNogc(sc, f);
checkAccess(loc, sc, NULL, f);
checkAccess(cd, loc, sc, f);

TypeFunction *tf = (TypeFunction *)f->type;
if (!arguments)
Expand Down Expand Up @@ -5031,7 +5032,7 @@ Expression *NewExp::semantic(Scope *sc)
checkPurity(sc, f);
checkSafety(sc, f);
checkNogc(sc, f);
checkAccess(loc, sc, NULL, f);
checkAccess(sd, loc, sc, f);

TypeFunction *tf = (TypeFunction *)f->type;
Type *rettype;
Expand Down Expand Up @@ -5059,7 +5060,7 @@ Expression *NewExp::semantic(Scope *sc)
checkPurity(sc, f);
checkSafety(sc, f);
checkNogc(sc, f);
checkAccess(loc, sc, NULL, f);
checkAccess(sd, loc, sc, f);

TypeFunction *tf = (TypeFunction *)f->type;
if (!arguments)
Expand Down
15 changes: 11 additions & 4 deletions src/magicport.json
Original file line number Diff line number Diff line change
Expand Up @@ -523,21 +523,28 @@
"declaration",
"dmodule",
"dscope",
"dstruct",
"dsymbol",
"errors",
"expression",
"globals"
"func",
"tokens",
"globals",
"mtype"
],
"extra" :
[
"private enum LOG = false;"
],
"members" :
[
"function isMember",
"function hasProtectedAccess",
"function getAccess",
"function isAccessible",
"function checkAccessAggregateDeclaration*LocScope*Dsymbol*",
"function isFriendOf",
"function hasPackageAccess",
"function checkAccess"
"function hasPrivateAccess",
"function checkAccessLocScope*Expression*Declaration*"
]
},
{
Expand Down
65 changes: 0 additions & 65 deletions test/compilable/imports/prot5770.d

This file was deleted.

283 changes: 0 additions & 283 deletions test/compilable/testprot5770.d

This file was deleted.

2 changes: 1 addition & 1 deletion test/fail_compilation/diag10169.d
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
/*
TEST_OUTPUT:
---
fail_compilation/diag10169.d(11): Error: struct imports.a10169.B member x is not accessible from module diag10169
fail_compilation/diag10169.d(11): Error: struct imports.a10169.B member x is not accessible
---
*/
import imports.a10169;
Expand Down
16 changes: 8 additions & 8 deletions test/fail_compilation/diag5385.d
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
/*
TEST_OUTPUT:
---
fail_compilation/diag5385.d(3): Error: class imports.fail5385.C member privX is not accessible from module diag5385
fail_compilation/diag5385.d(4): Error: class imports.fail5385.C member packX is not accessible from module diag5385
fail_compilation/diag5385.d(5): Error: class imports.fail5385.C member privX2 is not accessible from module diag5385
fail_compilation/diag5385.d(6): Error: class imports.fail5385.C member packX2 is not accessible from module diag5385
fail_compilation/diag5385.d(7): Error: struct imports.fail5385.S member privX is not accessible from module diag5385
fail_compilation/diag5385.d(8): Error: struct imports.fail5385.S member packX is not accessible from module diag5385
fail_compilation/diag5385.d(9): Error: struct imports.fail5385.S member privX2 is not accessible from module diag5385
fail_compilation/diag5385.d(10): Error: struct imports.fail5385.S member packX2 is not accessible from module diag5385
fail_compilation/diag5385.d(3): Error: class imports.fail5385.C member privX is not accessible
fail_compilation/diag5385.d(4): Error: class imports.fail5385.C member packX is not accessible
fail_compilation/diag5385.d(5): Error: class imports.fail5385.C member privX2 is not accessible
fail_compilation/diag5385.d(6): Error: class imports.fail5385.C member packX2 is not accessible
fail_compilation/diag5385.d(7): Error: struct imports.fail5385.S member privX is not accessible
fail_compilation/diag5385.d(8): Error: struct imports.fail5385.S member packX is not accessible
fail_compilation/diag5385.d(9): Error: struct imports.fail5385.S member privX2 is not accessible
fail_compilation/diag5385.d(10): Error: struct imports.fail5385.S member packX2 is not accessible
---
*/

Expand Down
8 changes: 4 additions & 4 deletions test/fail_compilation/fail10528.d
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,10 @@ fail_compilation/fail10528.d(19): Error: module fail10528 variable a10528.a is p
fail_compilation/fail10528.d(20): Error: variable a10528.a is not accessible from module fail10528
fail_compilation/fail10528.d(22): Error: variable a10528.b is not accessible from module fail10528
fail_compilation/fail10528.d(23): Error: variable a10528.b is not accessible from module fail10528
fail_compilation/fail10528.d(25): Error: struct a10528.S member c is not accessible from module fail10528
fail_compilation/fail10528.d(26): Error: struct a10528.S member c is not accessible from module fail10528
fail_compilation/fail10528.d(28): Error: class a10528.C member d is not accessible from module fail10528
fail_compilation/fail10528.d(29): Error: class a10528.C member d is not accessible from module fail10528
fail_compilation/fail10528.d(25): Error: variable a10528.S.c is not accessible from module fail10528
fail_compilation/fail10528.d(26): Error: variable a10528.S.c is not accessible from module fail10528
fail_compilation/fail10528.d(28): Error: variable a10528.C.d is not accessible from module fail10528
fail_compilation/fail10528.d(29): Error: variable a10528.C.d is not accessible from module fail10528
---
*/

Expand Down
8 changes: 4 additions & 4 deletions test/fail_compilation/fail14407.d
Original file line number Diff line number Diff line change
Expand Up @@ -8,11 +8,11 @@ fail_compilation/fail14407.d(22): Deprecation: allocator imports.a14407.C.new is
fail_compilation/fail14407.d(22): Error: pure function 'fail14407.testC' cannot call impure function 'imports.a14407.C.new'
fail_compilation/fail14407.d(22): Error: safe function 'fail14407.testC' cannot call system function 'imports.a14407.C.new'
fail_compilation/fail14407.d(22): Error: @nogc function 'fail14407.testC' cannot call non-@nogc function 'imports.a14407.C.new'
fail_compilation/fail14407.d(22): Error: class imports.a14407.C member new is not accessible from module fail14407
fail_compilation/fail14407.d(22): Error: class imports.a14407.C member new is not accessible
fail_compilation/fail14407.d(22): Error: pure function 'fail14407.testC' cannot call impure function 'imports.a14407.C.this'
fail_compilation/fail14407.d(22): Error: safe function 'fail14407.testC' cannot call system function 'imports.a14407.C.this'
fail_compilation/fail14407.d(22): Error: @nogc function 'fail14407.testC' cannot call non-@nogc function 'imports.a14407.C.this'
fail_compilation/fail14407.d(22): Error: class imports.a14407.C member this is not accessible from module fail14407
fail_compilation/fail14407.d(22): Error: class imports.a14407.C member this is not accessible
fail_compilation/fail14407.d(22): Error: constructor this is not nothrow
fail_compilation/fail14407.d(20): Error: function 'fail14407.testC' is nothrow yet may throw
---
Expand All @@ -30,11 +30,11 @@ fail_compilation/fail14407.d(44): Deprecation: allocator imports.a14407.S.new is
fail_compilation/fail14407.d(44): Error: pure function 'fail14407.testS' cannot call impure function 'imports.a14407.S.new'
fail_compilation/fail14407.d(44): Error: safe function 'fail14407.testS' cannot call system function 'imports.a14407.S.new'
fail_compilation/fail14407.d(44): Error: @nogc function 'fail14407.testS' cannot call non-@nogc function 'imports.a14407.S.new'
fail_compilation/fail14407.d(44): Error: struct imports.a14407.S member new is not accessible from module fail14407
fail_compilation/fail14407.d(44): Error: struct imports.a14407.S member new is not accessible
fail_compilation/fail14407.d(44): Error: pure function 'fail14407.testS' cannot call impure function 'imports.a14407.S.this'
fail_compilation/fail14407.d(44): Error: safe function 'fail14407.testS' cannot call system function 'imports.a14407.S.this'
fail_compilation/fail14407.d(44): Error: @nogc function 'fail14407.testS' cannot call non-@nogc function 'imports.a14407.S.this'
fail_compilation/fail14407.d(44): Error: struct imports.a14407.S member this is not accessible from module fail14407
fail_compilation/fail14407.d(44): Error: struct imports.a14407.S member this is not accessible
fail_compilation/fail14407.d(44): Error: constructor this is not nothrow
fail_compilation/fail14407.d(42): Error: function 'fail14407.testS' is nothrow yet may throw
---
Expand Down
15 changes: 0 additions & 15 deletions test/fail_compilation/fail5770.d

This file was deleted.

8 changes: 0 additions & 8 deletions test/fail_compilation/imports/a5770.d

This file was deleted.