Refer to bugzilla issues by hyperlink (#15328)

This commit is contained in:
Dennis 2023-06-16 13:48:47 +02:00 committed by GitHub
parent 9b0936f351
commit 530e41b7a0
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
28 changed files with 51 additions and 46 deletions

View file

@ -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.

View file

@ -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

View file

@ -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

View file

@ -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)

View file

@ -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)

View file

@ -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 ||

View file

@ -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());

View file

@ -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("{}");
} }

View file

@ -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)
{ {

View file

@ -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;
} }

View file

@ -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)

View file

@ -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)
{ {

View file

@ -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))

View file

@ -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 }

View file

@ -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

View file

@ -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) {}
} }

View file

@ -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 {}

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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
{ {

View file

@ -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));

View file

@ -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

View file

@ -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;

View file

@ -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);

View file

@ -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);

View file

@ -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

View file

@ -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));