mirror of
https://github.com/dlang/dmd.git
synced 2025-04-27 13:40:11 +03:00
Fix 10532, 14835, 20522 by adding test cases
This commit is contained in:
parent
f4fd327616
commit
cfd7cfd438
3 changed files with 48 additions and 1 deletions
|
@ -155,7 +155,7 @@ int blockExit(Statement s, FuncDeclaration func, ErrorSink eSink)
|
||||||
{
|
{
|
||||||
import dmd.errorsink : DiagnosticFlag;
|
import dmd.errorsink : DiagnosticFlag;
|
||||||
version (none) // this warning is completely useless due to insane false positive rate in real life template code
|
version (none) // this warning is completely useless due to insane false positive rate in real life template code
|
||||||
if (blockExit(s, func, mustNotThrow) != BE.halt && s.hasCode() &&
|
if (blockExit(s, func, eSink) != BE.halt && s.hasCode() &&
|
||||||
s.loc != Loc.initial) // don't emit warning for generated code
|
s.loc != Loc.initial) // don't emit warning for generated code
|
||||||
global.errorSink.warning(DiagnosticFlag.unreachable, s.loc, "statement is not reachable");
|
global.errorSink.warning(DiagnosticFlag.unreachable, s.loc, "statement is not reachable");
|
||||||
}
|
}
|
||||||
|
|
|
@ -71,3 +71,27 @@ void test3()
|
||||||
finally foo();
|
finally foo();
|
||||||
int x = 1;
|
int x = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// https://issues.dlang.org/show_bug.cgi?id=14835
|
||||||
|
bool isEven(int i)()
|
||||||
|
{
|
||||||
|
static if (i % 2)
|
||||||
|
return true;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
enum x = isEven!0;
|
||||||
|
|
||||||
|
// https://issues.dlang.org/show_bug.cgi?id=10532
|
||||||
|
alias Seq(T...) = T;
|
||||||
|
void f()
|
||||||
|
{
|
||||||
|
foreach (e; Seq!(10, 20))
|
||||||
|
{
|
||||||
|
if (e == 10)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
// lots of code follows..
|
||||||
|
auto x = 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
23
compiler/test/fail_compilation/test20522.d
Normal file
23
compiler/test/fail_compilation/test20522.d
Normal file
|
@ -0,0 +1,23 @@
|
||||||
|
/*
|
||||||
|
REQUIRED_ARGS: -w
|
||||||
|
TEST_OUTPUT:
|
||||||
|
---
|
||||||
|
fail_compilation/test20522.d(19): Error: undefined identifier `non_existent`
|
||||||
|
---
|
||||||
|
*/
|
||||||
|
|
||||||
|
// https://issues.dlang.org/show_bug.cgi?id=20522
|
||||||
|
struct File
|
||||||
|
{
|
||||||
|
~this() {}
|
||||||
|
}
|
||||||
|
|
||||||
|
void main()
|
||||||
|
{
|
||||||
|
{
|
||||||
|
auto test = File(); // <- Essential
|
||||||
|
non_existent;
|
||||||
|
}
|
||||||
|
// Warning: statement is not reachable
|
||||||
|
string[] is_this_unreachable_question_mark;
|
||||||
|
}
|
Loading…
Add table
Add a link
Reference in a new issue