mirror of
https://github.com/dlang/dmd.git
synced 2025-04-26 13:10:12 +03:00
Refer to bugzilla issues by hyperlink (#15328)
This commit is contained in:
parent
9b0936f351
commit
530e41b7a0
28 changed files with 51 additions and 46 deletions
|
@ -653,7 +653,8 @@ extern (C++) final class VisibilityDeclaration : AttribDeclaration
|
||||||
{
|
{
|
||||||
Module m = sc._module;
|
Module m = sc._module;
|
||||||
|
|
||||||
// While isAncestorPackageOf does an equality check, the fix for issue 17441 adds a check to see if
|
// https://issues.dlang.org/show_bug.cgi?id=17441
|
||||||
|
// While isAncestorPackageOf does an equality check, the fix for the issue adds a check to see if
|
||||||
// each package's .isModule() properites are equal.
|
// each package's .isModule() properites are equal.
|
||||||
//
|
//
|
||||||
// Properties generated from `package(foo)` i.e. visibility.pkg have .isModule() == null.
|
// Properties generated from `package(foo)` i.e. visibility.pkg have .isModule() == null.
|
||||||
|
|
|
@ -2883,7 +2883,7 @@ void scodelem(ref CodeBuilder cdb, elem *e,regm_t *pretregs,regm_t keepmsk,bool
|
||||||
|
|
||||||
assert((mfuncreg & (regcon.cse.mval & ~oldregcon)) == 0);
|
assert((mfuncreg & (regcon.cse.mval & ~oldregcon)) == 0);
|
||||||
|
|
||||||
/* bugzilla 3521
|
/* https://issues.dlang.org/show_bug.cgi?id=3521
|
||||||
* The problem is:
|
* The problem is:
|
||||||
* reg op (reg = exp)
|
* reg op (reg = exp)
|
||||||
* where reg must be preserved (in keepregs) while the expression to be evaluated
|
* where reg must be preserved (in keepregs) while the expression to be evaluated
|
||||||
|
|
|
@ -4235,7 +4235,7 @@ final class CParser(AST) : Parser!AST
|
||||||
return false;
|
return false;
|
||||||
/*
|
/*
|
||||||
https://issues.dlang.org/show_bug.cgi?id=22267
|
https://issues.dlang.org/show_bug.cgi?id=22267
|
||||||
Fix issue 22267: If the parser encounters the following
|
If the parser encounters the following
|
||||||
`identifier variableName = (expression);`
|
`identifier variableName = (expression);`
|
||||||
the initializer is not identified as such since the parentheses
|
the initializer is not identified as such since the parentheses
|
||||||
cause the parser to keep walking indefinitely
|
cause the parser to keep walking indefinitely
|
||||||
|
|
|
@ -3334,7 +3334,7 @@ elem* toElem(Expression e, IRState *irs)
|
||||||
{
|
{
|
||||||
// This optimization is not valid if alloca can be called
|
// This optimization is not valid if alloca can be called
|
||||||
// multiple times within the same function, eg in a loop
|
// multiple times within the same function, eg in a loop
|
||||||
// see issue 3822
|
// see https://issues.dlang.org/show_bug.cgi?id=3822
|
||||||
if (fd && fd.ident == Id.__alloca &&
|
if (fd && fd.ident == Id.__alloca &&
|
||||||
!fd.fbody && fd._linkage == LINK.c &&
|
!fd.fbody && fd._linkage == LINK.c &&
|
||||||
arguments && arguments.length == 1)
|
arguments && arguments.length == 1)
|
||||||
|
|
|
@ -291,7 +291,7 @@ void except_fillInEHTable(Symbol *s)
|
||||||
cf = code_next(cf);
|
cf = code_next(cf);
|
||||||
foffset += calccodsize(cf);
|
foffset += calccodsize(cf);
|
||||||
}
|
}
|
||||||
// issue 9438
|
// https://issues.dlang.org/show_bug.cgi?id=9438
|
||||||
//cf = code_next(cf);
|
//cf = code_next(cf);
|
||||||
//foffset += calccodsize(cf);
|
//foffset += calccodsize(cf);
|
||||||
if (config.ehmethod == EHmethod.EH_DM)
|
if (config.ehmethod == EHmethod.EH_DM)
|
||||||
|
|
|
@ -4512,7 +4512,7 @@ extern (C++) abstract class BinExp : Expression
|
||||||
Type t2 = e2.type;
|
Type t2 = e2.type;
|
||||||
|
|
||||||
// T opAssign floating yields a floating. Prevent truncating conversions (float to int).
|
// T opAssign floating yields a floating. Prevent truncating conversions (float to int).
|
||||||
// See issue 3841.
|
// See https://issues.dlang.org/show_bug.cgi?id=3841.
|
||||||
// Should we also prevent double to float (type.isfloating() && type.size() < t2.size()) ?
|
// Should we also prevent double to float (type.isfloating() && type.size() < t2.size()) ?
|
||||||
if (op == EXP.addAssign || op == EXP.minAssign ||
|
if (op == EXP.addAssign || op == EXP.minAssign ||
|
||||||
op == EXP.mulAssign || op == EXP.divAssign || op == EXP.modAssign ||
|
op == EXP.mulAssign || op == EXP.divAssign || op == EXP.modAssign ||
|
||||||
|
|
|
@ -3387,7 +3387,7 @@ private extern (C++) final class ExpressionSemanticVisitor : Visitor
|
||||||
if (ve && ve.var && exp.parens && !ve.var.isStatic() && !(sc.stc & STC.static_) &&
|
if (ve && ve.var && exp.parens && !ve.var.isStatic() && !(sc.stc & STC.static_) &&
|
||||||
sc.func && sc.func.needThis && ve.var.isMember2())
|
sc.func && sc.func.needThis && ve.var.isMember2())
|
||||||
{
|
{
|
||||||
// printf("apply fix for issue 9490: add `this.` to `%s`...\n", e.toChars());
|
// printf("apply fix for bugzilla issue 9490: add `this.` to `%s`...\n", e.toChars());
|
||||||
e = new DotVarExp(exp.loc, new ThisExp(exp.loc), ve.var, false);
|
e = new DotVarExp(exp.loc, new ThisExp(exp.loc), ve.var, false);
|
||||||
}
|
}
|
||||||
//printf("e = %s %s\n", Token.toChars(e.op), e.toChars());
|
//printf("e = %s %s\n", Token.toChars(e.op), e.toChars());
|
||||||
|
|
|
@ -927,7 +927,7 @@ public:
|
||||||
}
|
}
|
||||||
if (d.decl.length == 0 || (hgs.hdrgen && d.decl.length == 1 && (*d.decl)[0].isUnitTestDeclaration()))
|
if (d.decl.length == 0 || (hgs.hdrgen && d.decl.length == 1 && (*d.decl)[0].isUnitTestDeclaration()))
|
||||||
{
|
{
|
||||||
// hack for bugzilla 8081
|
// hack for https://issues.dlang.org/show_bug.cgi?id=8081
|
||||||
if (hasSTC) buf.writeByte(' ');
|
if (hasSTC) buf.writeByte(' ');
|
||||||
buf.writestring("{}");
|
buf.writestring("{}");
|
||||||
}
|
}
|
||||||
|
|
|
@ -84,8 +84,8 @@ private void inlineScanDsymbol(Dsymbol s)
|
||||||
* Perform the "inline copying" of a default argument for a function parameter.
|
* Perform the "inline copying" of a default argument for a function parameter.
|
||||||
*
|
*
|
||||||
* Todo:
|
* Todo:
|
||||||
* The hack for bugzilla 4820 case is still questionable. Perhaps would have to
|
* The hack for https://issues.dlang.org/show_bug.cgi?id=4820 case is still questionable.
|
||||||
* handle a delegate expression with 'null' context properly in front-end.
|
* Perhaps would have to handle a delegate expression with 'null' context properly in front-end.
|
||||||
*/
|
*/
|
||||||
public Expression inlineCopy(Expression e, Scope* sc)
|
public Expression inlineCopy(Expression e, Scope* sc)
|
||||||
{
|
{
|
||||||
|
|
|
@ -2054,7 +2054,7 @@ extern (C++) abstract class Type : ASTNode
|
||||||
return Type.terror;
|
return Type.terror;
|
||||||
|
|
||||||
auto t = fd.type.nextOf();
|
auto t = fd.type.nextOf();
|
||||||
if (!t) // issue 14185
|
if (!t) // https://issues.dlang.org/show_bug.cgi?id=14185
|
||||||
return Type.terror;
|
return Type.terror;
|
||||||
t = t.substWildTo(mod == 0 ? MODFlags.mutable : mod);
|
t = t.substWildTo(mod == 0 ? MODFlags.mutable : mod);
|
||||||
return t;
|
return t;
|
||||||
|
@ -5105,7 +5105,7 @@ extern (C++) final class TypeDelegate : TypeNext
|
||||||
* This is a shell containing a TraitsExp that can be
|
* This is a shell containing a TraitsExp that can be
|
||||||
* either resolved to a type or to a symbol.
|
* either resolved to a type or to a symbol.
|
||||||
*
|
*
|
||||||
* The point is to allow AliasDeclarationY to use `__traits()`, see issue 7804.
|
* The point is to allow AliasDeclarationY to use `__traits()`, see https://issues.dlang.org/show_bug.cgi?id=7804.
|
||||||
*/
|
*/
|
||||||
extern (C++) final class TypeTraits : Type
|
extern (C++) final class TypeTraits : Type
|
||||||
{
|
{
|
||||||
|
@ -7271,7 +7271,7 @@ private extern(D) bool isCopyConstructorCallable (StructDeclaration argStruct,
|
||||||
{
|
{
|
||||||
/* Although a copy constructor may exist, no suitable match was found.
|
/* Although a copy constructor may exist, no suitable match was found.
|
||||||
* i.e: `inout` constructor creates `const` object, not mutable.
|
* i.e: `inout` constructor creates `const` object, not mutable.
|
||||||
* Fallback to using the original generic error before bugzilla 22202.
|
* Fallback to using the original generic error before https://issues.dlang.org/show_bug.cgi?id=22202.
|
||||||
*/
|
*/
|
||||||
goto Lnocpctor;
|
goto Lnocpctor;
|
||||||
}
|
}
|
||||||
|
|
|
@ -189,7 +189,7 @@ private Expression fromConstInitializer(int result, Expression e1)
|
||||||
{
|
{
|
||||||
// If it is a comma expression involving a declaration, we mustn't
|
// If it is a comma expression involving a declaration, we mustn't
|
||||||
// perform a copy -- we'd get two declarations of the same variable.
|
// perform a copy -- we'd get two declarations of the same variable.
|
||||||
// See bugzilla 4465.
|
// See https://issues.dlang.org/show_bug.cgi?id=4465.
|
||||||
if (e.op == EXP.comma && e.isCommaExp().e1.isDeclarationExp())
|
if (e.op == EXP.comma && e.isCommaExp().e1.isDeclarationExp())
|
||||||
e = e1;
|
e = e1;
|
||||||
else if (e.type != e1.type && e1.type && e1.type.ty != Tident)
|
else if (e.type != e1.type && e1.type && e1.type.ty != Tident)
|
||||||
|
|
|
@ -845,7 +845,7 @@ void buildClosure(FuncDeclaration fd, IRState *irs)
|
||||||
v.inClosure = true;
|
v.inClosure = true;
|
||||||
|
|
||||||
// Hack for the case fail_compilation/fail10666.d,
|
// Hack for the case fail_compilation/fail10666.d,
|
||||||
// until proper issue 5730 fix will come.
|
// until proper https://issues.dlang.org/show_bug.cgi?id=5730 fix will come.
|
||||||
bool isScopeDtorParam = v.edtor && (v.storage_class & STC.parameter);
|
bool isScopeDtorParam = v.edtor && (v.storage_class & STC.parameter);
|
||||||
if (v.needsScopeDtor() || isScopeDtorParam)
|
if (v.needsScopeDtor() || isScopeDtorParam)
|
||||||
{
|
{
|
||||||
|
|
|
@ -2116,7 +2116,7 @@ private bool isSame(RootObject o1, RootObject o2, Scope* sc)
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
// issue 12001, allow isSame, <BasicType>, <BasicType>
|
// https://issues.dlang.org/show_bug.cgi?id=12001, allow isSame, <BasicType>, <BasicType>
|
||||||
Type t1 = isType(o1);
|
Type t1 = isType(o1);
|
||||||
Type t2 = isType(o2);
|
Type t2 = isType(o2);
|
||||||
if (t1 && t2 && t1.equals(t2))
|
if (t1 && t2 && t1.equals(t2))
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
// issue 20938 - Cannot create const arrays mixing immutable and mutable structs with indirections
|
// https://issues.dlang.org/show_bug.cgi?id=20938
|
||||||
|
// Cannot create const arrays mixing immutable and mutable structs with indirections
|
||||||
struct S { int[] a; }
|
struct S { int[] a; }
|
||||||
enum A { a }
|
enum A { a }
|
||||||
enum B { b }
|
enum B { b }
|
||||||
|
|
|
@ -39,7 +39,7 @@ void test16635_1()
|
||||||
Vector2 b = Vector2(3, 4);
|
Vector2 b = Vector2(3, 4);
|
||||||
|
|
||||||
// this line causes application to run infinitely
|
// this line causes application to run infinitely
|
||||||
// Already fixed. It was issue 16621
|
// Already fixed. It was https://issues.dlang.org/show_bug.cgi?id=16621
|
||||||
Vector2 c = a + b;
|
Vector2 c = a + b;
|
||||||
|
|
||||||
// OK <- this line seg faults without the above line
|
// OK <- this line seg faults without the above line
|
||||||
|
|
|
@ -171,9 +171,9 @@ template map7017(fun...) if (fun.length >= 1)
|
||||||
auto map7017()
|
auto map7017()
|
||||||
{
|
{
|
||||||
struct Result {
|
struct Result {
|
||||||
this(int dummy){} // impure member function -> inferred to pure by fixing issue 10329
|
this(int dummy){} // impure member function -> inferred to pure by fixing https://issues.dlang.org/show_bug.cgi?id=10329
|
||||||
}
|
}
|
||||||
return Result(0); // impure call -> inferred to pure by fixing issue 10329
|
return Result(0); // impure call -> inferred to pure by fixing https://issues.dlang.org/show_bug.cgi?id=10329
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -588,7 +588,7 @@ auto fb10148(T)()
|
||||||
static assert(is(typeof(&fc) == void delegate()));
|
static assert(is(typeof(&fc) == void delegate()));
|
||||||
fa10148();
|
fa10148();
|
||||||
}
|
}
|
||||||
// [1] this is now inferred to @safe by implementing issue 7511
|
// [1] this is now inferred to @safe by implementing https://issues.dlang.org/show_bug.cgi?id=7511
|
||||||
this(S a) {}
|
this(S a) {}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -301,7 +301,7 @@ void test10734()
|
||||||
|
|
||||||
void test14656()
|
void test14656()
|
||||||
{
|
{
|
||||||
//void unaryFun()(auto int a) pure nothrow @safe @nogc {} // changed to invalid by fixing issue 14669
|
//void unaryFun()(auto int a) pure nothrow @safe @nogc {} // changed to invalid by fixing https://issues.dlang.org/show_bug.cgi?id=14669
|
||||||
alias Identity(F) = F;
|
alias Identity(F) = F;
|
||||||
//unaryFun!()(41);
|
//unaryFun!()(41);
|
||||||
static void fun(int n) pure nothrow @safe @nogc {}
|
static void fun(int n) pure nothrow @safe @nogc {}
|
||||||
|
|
|
@ -962,11 +962,11 @@ void test1747()
|
||||||
assert(pia == pc + n);
|
assert(pia == pc + n);
|
||||||
|
|
||||||
assert(id.mA() == 1);
|
assert(id.mA() == 1);
|
||||||
assert(id.mB() == 2); // OK <- NG (bugzilla 2013 case)
|
assert(id.mB() == 2); // OK <- NG (https://issues.dlang.org/show_bug.cgi?id=2013 case)
|
||||||
assert(id.mD() == 3);
|
assert(id.mD() == 3);
|
||||||
|
|
||||||
assert(ic.mA() == 1);
|
assert(ic.mA() == 1);
|
||||||
assert(ic.mB() == 2); // OK <- NG (bugzilla 2013 case)
|
assert(ic.mB() == 2); // OK <- NG (https://issues.dlang.org/show_bug.cgi?id=2013 case)
|
||||||
|
|
||||||
assert(ib.mA() == 1);
|
assert(ib.mA() == 1);
|
||||||
assert(ib.mB() == 2); // OK <- NG
|
assert(ib.mB() == 2); // OK <- NG
|
||||||
|
|
|
@ -10,7 +10,7 @@ void main()
|
||||||
* the TypeInfo object on comdat section (done by TypeInfoDeclaration::toObjFile),
|
* the TypeInfo object on comdat section (done by TypeInfoDeclaration::toObjFile),
|
||||||
* even if the associated struct belongs *non-root modules*.
|
* even if the associated struct belongs *non-root modules*.
|
||||||
*
|
*
|
||||||
* And, from 2.062, issue 7511 is implemented.
|
* And, from 2.062, https://issues.dlang.org/show_bug.cgi?id=7511 is implemented.
|
||||||
* The attribute inference for member functions in instantiated struct may modify
|
* The attribute inference for member functions in instantiated struct may modify
|
||||||
* their actual mangled names. Then TypeInfo object compiled in this module would
|
* their actual mangled names. Then TypeInfo object compiled in this module would
|
||||||
* use wrong symbol names, to link non-template opEquals/opCmp/toHash/toString
|
* use wrong symbol names, to link non-template opEquals/opCmp/toHash/toString
|
||||||
|
|
|
@ -4689,7 +4689,8 @@ struct S14604
|
||||||
}
|
}
|
||||||
alias Id14604(alias thing) = thing;
|
alias Id14604(alias thing) = thing;
|
||||||
alias c14604 = Id14604!(S14604.opDispatch!"go"); // ok
|
alias c14604 = Id14604!(S14604.opDispatch!"go"); // ok
|
||||||
alias d14604 = Id14604!(S14604.go); // issue 14604, 'Error: template instance opDispatch!"go" cannot resolve forward reference'
|
// https://issues.dlang.org/show_bug.cgi?id=14604
|
||||||
|
alias d14604 = Id14604!(S14604.go); // 'Error: template instance opDispatch!"go" cannot resolve forward reference'
|
||||||
|
|
||||||
/******************************************/
|
/******************************************/
|
||||||
// https://issues.dlang.org/show_bug.cgi?id=14735
|
// https://issues.dlang.org/show_bug.cgi?id=14735
|
||||||
|
|
|
@ -936,7 +936,7 @@ void test9383()
|
||||||
|
|
||||||
/*******************************************/
|
/*******************************************/
|
||||||
// https://issues.dlang.org/show_bug.cgi?id=15524
|
// https://issues.dlang.org/show_bug.cgi?id=15524
|
||||||
// Different from issue 9383 cases, closed variable size is bigger than REGSIZE.
|
// Different from https://issues.dlang.org/show_bug.cgi?id=9383 cases, closed variable size is bigger than REGSIZE.
|
||||||
|
|
||||||
class A15524
|
class A15524
|
||||||
{
|
{
|
||||||
|
|
|
@ -1203,7 +1203,7 @@ version (CoreUnittest)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@betterC pure nothrow @nogc @safe unittest // issue 16651
|
@betterC pure nothrow @nogc @safe unittest // https://issues.dlang.org/show_bug.cgi?id=16651
|
||||||
{
|
{
|
||||||
shared ulong a = 2;
|
shared ulong a = 2;
|
||||||
uint b = 1;
|
uint b = 1;
|
||||||
|
@ -1216,7 +1216,7 @@ version (CoreUnittest)
|
||||||
assert(c == 1);
|
assert(c == 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
pure nothrow @safe unittest // issue 16230
|
pure nothrow @safe unittest // https://issues.dlang.org/show_bug.cgi?id=16230
|
||||||
{
|
{
|
||||||
shared int i;
|
shared int i;
|
||||||
static assert(is(typeof(atomicLoad(i)) == int));
|
static assert(is(typeof(atomicLoad(i)) == int));
|
||||||
|
|
|
@ -93,7 +93,7 @@ private
|
||||||
int rt_hasFinalizerInSegment(void* p, size_t size, uint attr, const scope void[] segment) nothrow;
|
int rt_hasFinalizerInSegment(void* p, size_t size, uint attr, const scope void[] segment) nothrow;
|
||||||
|
|
||||||
// Declared as an extern instead of importing core.exception
|
// Declared as an extern instead of importing core.exception
|
||||||
// to avoid inlining - see issue 13725.
|
// to avoid inlining - see https://issues.dlang.org/show_bug.cgi?id=13725.
|
||||||
void onInvalidMemoryOperationError(void* pretend_sideffect = null) @trusted pure nothrow @nogc;
|
void onInvalidMemoryOperationError(void* pretend_sideffect = null) @trusted pure nothrow @nogc;
|
||||||
void onOutOfMemoryErrorNoGC() @trusted nothrow @nogc;
|
void onOutOfMemoryErrorNoGC() @trusted nothrow @nogc;
|
||||||
|
|
||||||
|
@ -4453,7 +4453,7 @@ struct SmallObjectPool
|
||||||
}
|
}
|
||||||
|
|
||||||
debug(SENTINEL) {} else // no additional capacity with SENTINEL
|
debug(SENTINEL) {} else // no additional capacity with SENTINEL
|
||||||
unittest // bugzilla 14467
|
unittest // https://issues.dlang.org/show_bug.cgi?id=14467
|
||||||
{
|
{
|
||||||
int[] arr = new int[10];
|
int[] arr = new int[10];
|
||||||
assert(arr.capacity);
|
assert(arr.capacity);
|
||||||
|
@ -4461,7 +4461,7 @@ unittest // bugzilla 14467
|
||||||
assert(arr.capacity);
|
assert(arr.capacity);
|
||||||
}
|
}
|
||||||
|
|
||||||
unittest // bugzilla 15353
|
unittest // https://issues.dlang.org/show_bug.cgi?id=15353
|
||||||
{
|
{
|
||||||
import core.memory : GC;
|
import core.memory : GC;
|
||||||
|
|
||||||
|
@ -4478,7 +4478,7 @@ unittest // bugzilla 15353
|
||||||
GC.collect();
|
GC.collect();
|
||||||
}
|
}
|
||||||
|
|
||||||
unittest // bugzilla 15822
|
unittest // https://issues.dlang.org/show_bug.cgi?id=15822
|
||||||
{
|
{
|
||||||
import core.memory : GC;
|
import core.memory : GC;
|
||||||
|
|
||||||
|
@ -4499,7 +4499,7 @@ unittest // bugzilla 15822
|
||||||
GC.collect();
|
GC.collect();
|
||||||
}
|
}
|
||||||
|
|
||||||
unittest // bugzilla 1180
|
unittest // https://issues.dlang.org/show_bug.cgi?id=1180
|
||||||
{
|
{
|
||||||
import core.exception;
|
import core.exception;
|
||||||
try
|
try
|
||||||
|
|
|
@ -364,7 +364,7 @@ T* emplace(T, Args...)(void[] chunk, auto ref Args args)
|
||||||
assert(u1.a == "hello");
|
assert(u1.a == "hello");
|
||||||
}
|
}
|
||||||
|
|
||||||
@system unittest // bugzilla 15772
|
@system unittest // https://issues.dlang.org/show_bug.cgi?id=15772
|
||||||
{
|
{
|
||||||
abstract class Foo {}
|
abstract class Foo {}
|
||||||
class Bar: Foo {}
|
class Bar: Foo {}
|
||||||
|
@ -2322,7 +2322,7 @@ pure nothrow @nogc @system unittest
|
||||||
assert(val == 1);
|
assert(val == 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
// issue 18913
|
// https://issues.dlang.org/show_bug.cgi?id=18913
|
||||||
@safe unittest
|
@safe unittest
|
||||||
{
|
{
|
||||||
static struct NoCopy
|
static struct NoCopy
|
||||||
|
@ -2454,7 +2454,7 @@ template _d_delstructImpl(T)
|
||||||
assert(outerDtors == 1);
|
assert(outerDtors == 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
// issue 25552
|
// https://issues.dlang.org/show_bug.cgi?id=25552
|
||||||
pure nothrow @system unittest
|
pure nothrow @system unittest
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
|
@ -2478,7 +2478,7 @@ pure nothrow @system unittest
|
||||||
assert(i == 2);
|
assert(i == 2);
|
||||||
}
|
}
|
||||||
|
|
||||||
// issue 25552
|
// https://issues.dlang.org/show_bug.cgi?id=25552
|
||||||
@safe unittest
|
@safe unittest
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
|
@ -2527,7 +2527,7 @@ pure nothrow @system unittest
|
||||||
assert(i == 6);
|
assert(i == 6);
|
||||||
}
|
}
|
||||||
|
|
||||||
// issue 25552
|
// https://issues.dlang.org/show_bug.cgi?id=25552
|
||||||
@safe unittest
|
@safe unittest
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
|
|
|
@ -289,8 +289,9 @@ if ((is(LHS : const Object) || is(LHS : const shared Object)) &&
|
||||||
// If same exact type => one call to method opEquals
|
// If same exact type => one call to method opEquals
|
||||||
if (typeid(lhs) is typeid(rhs) ||
|
if (typeid(lhs) is typeid(rhs) ||
|
||||||
!__ctfe && typeid(lhs).opEquals(typeid(rhs)))
|
!__ctfe && typeid(lhs).opEquals(typeid(rhs)))
|
||||||
/* CTFE doesn't like typeid much. 'is' works, but opEquals doesn't
|
/* CTFE doesn't like typeid much. 'is' works, but opEquals doesn't:
|
||||||
(issue 7147). But CTFE also guarantees that equal TypeInfos are
|
https://issues.dlang.org/show_bug.cgi?id=7147
|
||||||
|
But CTFE also guarantees that equal TypeInfos are
|
||||||
always identical. So, no opEquals needed during CTFE. */
|
always identical. So, no opEquals needed during CTFE. */
|
||||||
{
|
{
|
||||||
return true;
|
return true;
|
||||||
|
@ -983,7 +984,7 @@ class TypeInfo_Enum : TypeInfo
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@safe unittest // issue 12233
|
@safe unittest // https://issues.dlang.org/show_bug.cgi?id=12233
|
||||||
{
|
{
|
||||||
static assert(is(typeof(TypeInfo.init) == TypeInfo));
|
static assert(is(typeof(TypeInfo.init) == TypeInfo));
|
||||||
assert(TypeInfo.init is null);
|
assert(TypeInfo.init is null);
|
||||||
|
|
|
@ -590,7 +590,8 @@ ClassInfo getClassInfo(_Unwind_Exception* exceptionObject, const(ubyte)* current
|
||||||
for (ExceptionHeader* ehn = eh.next; ehn; ehn = ehn.next)
|
for (ExceptionHeader* ehn = eh.next; ehn; ehn = ehn.next)
|
||||||
{
|
{
|
||||||
// like __dmd_personality_v0, don't combine when the exceptions are from different functions
|
// like __dmd_personality_v0, don't combine when the exceptions are from different functions
|
||||||
// (fixes issue 19831, exception thrown and caught while inside finally block)
|
// Fixes "exception thrown and caught while inside finally block"
|
||||||
|
// https://issues.dlang.org/show_bug.cgi?id=19831
|
||||||
if (currentLsd != ehn.languageSpecificData)
|
if (currentLsd != ehn.languageSpecificData)
|
||||||
{
|
{
|
||||||
debug (EH_personality) writeln("break: %p %p", currentLsd, ehn.languageSpecificData);
|
debug (EH_personality) writeln("break: %p %p", currentLsd, ehn.languageSpecificData);
|
||||||
|
|
|
@ -2381,7 +2381,7 @@ unittest
|
||||||
|
|
||||||
unittest
|
unittest
|
||||||
{
|
{
|
||||||
// bugzilla 13854
|
// https://issues.dlang.org/show_bug.cgi?id=13854
|
||||||
auto arr = new ubyte[PAGESIZE]; // ensure page size
|
auto arr = new ubyte[PAGESIZE]; // ensure page size
|
||||||
auto info1 = GC.query(arr.ptr);
|
auto info1 = GC.query(arr.ptr);
|
||||||
assert(info1.base !is arr.ptr); // offset is required for page size or larger
|
assert(info1.base !is arr.ptr); // offset is required for page size or larger
|
||||||
|
@ -2424,7 +2424,7 @@ unittest
|
||||||
|
|
||||||
unittest
|
unittest
|
||||||
{
|
{
|
||||||
// bugzilla 13878
|
// https://issues.dlang.org/show_bug.cgi?id=13878
|
||||||
auto arr = new ubyte[1];
|
auto arr = new ubyte[1];
|
||||||
auto info = GC.query(arr.ptr);
|
auto info = GC.query(arr.ptr);
|
||||||
assert(info.attr & BlkAttr.NO_SCAN); // should be NO_SCAN
|
assert(info.attr & BlkAttr.NO_SCAN); // should be NO_SCAN
|
||||||
|
|
|
@ -545,7 +545,7 @@ unittest
|
||||||
|
|
||||||
unittest
|
unittest
|
||||||
{
|
{
|
||||||
// Original test case from issue 13073
|
// Original test case from https://issues.dlang.org/show_bug.cgi?id=13073
|
||||||
uint x = 0x22_DF_FF_FF;
|
uint x = 0x22_DF_FF_FF;
|
||||||
uint y = 0xA2_DF_FF_FF;
|
uint y = 0xA2_DF_FF_FF;
|
||||||
assert(!(x < y && y < x));
|
assert(!(x < y && y < x));
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue