7 changes: 7 additions & 0 deletions test/compilable/test313f.d
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
// REQUIRED_ARGS: -de
import imports.f313;

void test()
{
imports.f313.bug();
}
27 changes: 19 additions & 8 deletions test/fail_compilation/fail313.d
Original file line number Diff line number Diff line change
@@ -1,19 +1,30 @@
/*
REQUIRED_ARGS: -de
TEST_OUTPUT:
---
fail_compilation/fail313.d(15): Error: function fail313.Derived.str return type inference is not supported if may override base class function
fail_compilation/fail313.d(17): Deprecation: module imports.b313 is not accessible here, perhaps add 'static import imports.b313;'
fail_compilation/fail313.d(24): Deprecation: package core.stdc is not accessible here
fail_compilation/fail313.d(24): Deprecation: module core.stdc.stdio is not accessible here, perhaps add 'static import core.stdc.stdio;'
fail_compilation/fail313.d(29): Deprecation: package imports.pkg313 is not accessible here, perhaps add 'static import imports.pkg313;'
---
*/
module test313;

class Base
import imports.a313;

void test1()
{
imports.b313.bug();
import imports.b313;
imports.b313.bug();
}

void test2()
{
abstract int str();
core.stdc.stdio.printf("");
}

class Derived : Base
void test2()
{
override str()
{
return "string";
}
imports.pkg313.bug();
}
1 change: 1 addition & 0 deletions test/fail_compilation/imports/a13131checkpoint.d
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ auto createGlobalsMixins() // [4] semantic3
{
pragma(msg, "+A");
enum fullModuleName = "imports.a13131parameters"; // necessary
mixin("import "~fullModuleName~";");
foreach (e ; __traits(derivedMembers, mixin(fullModuleName)))
{
// [5] see imports.parameters (it's listed in command line)
Expand Down
1 change: 1 addition & 0 deletions test/fail_compilation/imports/a13131parameters.d
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ auto createParameterMixins() // auto is necessary to invoke semantic3 to calc
{
pragma(msg, "+B");
enum fullModuleName = "imports.a13131elec"; // necessary
mixin("import "~fullModuleName~";");
foreach (e ; __traits(derivedMembers, mixin(fullModuleName)))
{
// will access yet-not semantic analyzed invalid symbol 'econn' in imports.elec
Expand Down
9 changes: 9 additions & 0 deletions test/fail_compilation/imports/a313.d
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
module imports.a313;

private import imports.b313;
private static import imports.b313;
private static import b313 = imports.b313;

private import imports.pkg313;

private import core.stdc.stdio;
4 changes: 4 additions & 0 deletions test/fail_compilation/imports/b313.d
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
module imports.b313;

void bug()
{}
4 changes: 4 additions & 0 deletions test/fail_compilation/imports/pkg313/package.d
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
module imports.pkg313;

void bug()
{}