Commit graph

1126 commits

Author SHA1 Message Date
Dennis
4d0934d37f
merge stable (#21127)
* bump VERSION to v2.110.0

* purge changelog

* bump VERSION to v2.111.0-beta.1

* Accept __rvalue attribute on ref functions; which will force the result to be treated as __rvalue. (#20946)

This is essential to implement `move`, `forward`, etc.

* memoryerror.d: Fix AnySupported version condition (#20983)

* Fix #20982 - wrong line number in iasmgcc (#20993)

* Move genCfunc to cxxfrontend (#20992)

* druntime: Fix compilation of rt.cover on Android (#21015)

* Expose SourceLoc to C++ interface (#20980)

* [stable] C++ header fixes for declaration, expression, and typinf (#21016)

Seen either from compilation errors or missing symbols at link time.

* C++ headers: Add 3 Declaration bitfield setters/getters required by LDC

* druntime: Add module declaration to rt.invariant, to prevent conflicts with user-provided invariant.d (#21017)

* Fix #21020 - Indexing a *cast* AA yields no lvalue anymore (#21029)

* Add C++23 to CppStdRevision enum (#21043)

* Improve UFCS/property error message (#21046)

* bump VERSION to v2.111.0-rc.1

* Fix #21045 - import __stdin causes compilation to pause while reading from stdin (#21047)

Moves the special handling of reading from stdin out of the semantic
routines to the DMD driver itself. All references to `__stdin.d` have
also been removed from the frontend implementation.

* Update source code and coverage links (#21111)

* Fix #21024 - Optimize x^^c expressions (#21082)

* Fix #21024 - Optimize x^^c expressions

Reason for the *magic* constraint c<8 on inlining x^^c:

https://sourceware.org/git/?p=glibc.git;a=blob;f=sysdeps/x86_64/fpu/e_powl.S;h=47f129f34d368d7c67b8e5f2462b36b0bebb7621;hb=HEAD#l136

* Fix poor assumption about expression state

* Restrict optimization to floating point expressions

* Generalize optimization to any scalar data type

* Fix segfault on x^^c where x is a single member anonymous enum

DMD segfaulted on compiling the unittests in std/algorithm/sorting.o, the
unittest that caused the segfault can be reduced to:

    enum real Two = 2.0;
    auto _ = Two^^3;

I'm not sure why copying the anonymous enum into a `const` variable causes
the compiler to segfault.

* Add tests to x^^c inlining optimization

* Fix missing type for e1 ^^ -1 to 1 / e1 rewrite

* Move rewrites from constant folding to expression semantic and restrict them to [-1, 2]

* Improve error message for the x^^2 rewrite.

Before:
    ex.d(4): Error: can implicitly convert expression `(const const(double) __powtmp2 = x + 5.0;) , __powtmp2 * ...` of type `double` to `int`
        int y = ( x + 5 ) ^^ 2;
                ^
and after:
    ex.d(4): Error: cannot implicitly convert expression `(x + 5.0) ^^ 2L` of type `double` to `int`
        int y = ( x + 5 ) ^^ 2;
                ^

* Update C++ frontend header to match change in `CommaExp`

* Address code review feedback

Co-authored-by: Dennis Korpel <dkorpel@gmail.com>

---------

Co-authored-by: Dennis Korpel <dkorpel@gmail.com>

* Revert "Fix #21024 - Optimize x^^c expressions (#21082)" (#21114)

This reverts commit fa1f860e4b.

* bump VERSION to v2.111.0

* purge changelog

* Strip trailing newline off sarif version

---------

Co-authored-by: Manu Evans <turkeyman@gmail.com>
Co-authored-by: Martin Kinkelin <kinke@users.noreply.github.com>
Co-authored-by: Iain Buclaw <ibuclaw@gdcproject.org>
Co-authored-by: Martin Kinkelin <noone@nowhere.com>
Co-authored-by: Fares A. Bakhit <faresa.bakhit@gmail.com>
2025-03-31 15:54:53 +02:00
Iain Buclaw
5c9c91a651 pow: Ensure side effects are evaluated in e1^^0 rewrite 2025-03-29 21:39:12 +01:00
Dennis
95fdc47f5f
Fix #21024 - Optimize x^^c expressions (#21082) (#21115)
* Fix #21024 - Optimize x^^c expressions

Reason for the *magic* constraint c<8 on inlining x^^c:

https://sourceware.org/git/?p=glibc.git;a=blob;f=sysdeps/x86_64/fpu/e_powl.S;h=47f129f34d368d7c67b8e5f2462b36b0bebb7621;hb=HEAD#l136

* Fix poor assumption about expression state

* Restrict optimization to floating point expressions

* Generalize optimization to any scalar data type

* Fix segfault on x^^c where x is a single member anonymous enum

DMD segfaulted on compiling the unittests in std/algorithm/sorting.o, the
unittest that caused the segfault can be reduced to:

    enum real Two = 2.0;
    auto _ = Two^^3;

I'm not sure why copying the anonymous enum into a `const` variable causes
the compiler to segfault.

* Add tests to x^^c inlining optimization

* Fix missing type for e1 ^^ -1 to 1 / e1 rewrite

* Move rewrites from constant folding to expression semantic and restrict them to [-1, 2]

* Improve error message for the x^^2 rewrite.

Before:
    ex.d(4): Error: can implicitly convert expression `(const const(double) __powtmp2 = x + 5.0;) , __powtmp2 * ...` of type `double` to `int`
        int y = ( x + 5 ) ^^ 2;
                ^
and after:
    ex.d(4): Error: cannot implicitly convert expression `(x + 5.0) ^^ 2L` of type `double` to `int`
        int y = ( x + 5 ) ^^ 2;
                ^

* Update C++ frontend header to match change in `CommaExp`

* Address code review feedback



---------

Co-authored-by: Fares A. Bakhit <faresa.bakhit@gmail.com>
2025-03-29 13:57:10 +01:00
Rainer Schuetze
13d0a42ad5
Fix #21105: Is-expressions should not generate unnecessary code for lowerings (#21106)
treat as if compiling with __traits(compiles)
2025-03-29 08:36:10 +08:00
Abul Hossain Khan
228f8dbcea
Improve fix: #20867 ICE on final switch forward referencing its enum. (#21097)
* Mark C enums as semantic2done to prevent segfaults in final switch

* Added corresponding test case
2025-03-28 10:13:12 +01:00
Nick Treleaven
13b0745e33
Fix error when struct initializer isn't accepted (#21086)
* Fix error when struct initializer isn't accepted

* Rename StructDeclaration.hasRegularCtor parameter to ignoreDisabled

checkDisabled detected disabled ctors when it was false, which was
confusing!

* Update tests
2025-03-26 11:28:07 +01:00
Dennis
3142290b6f
Improve 'no property' error suggestions for pointers (#21087) 2025-03-26 15:43:36 +08:00
Samrendra Pratap Singh
c26b03fba2
Fix dlang#18262 - Fix expected error message for enum auto-increment (#21067)
* Fix dlang#18262 - Resolved special enum case and other conflicts

* Fix dlang#18262 - Resolved Special Enum case and failing test.

* Fix dlang#18262 - Resolved special enum case and other failing tests
2025-03-25 18:25:34 +08:00
Nick Treleaven
e896b5c98d
Fix hidden base constructor supplemental message (#21069)
Fixes #21068.
Also say base class *constructor* in supplemental message.
2025-03-24 05:47:29 +08:00
Dennis
0ae065db22
Fix #20901: can escape stack pointer through indexed array literal (#21063) 2025-03-23 08:35:43 +08:00
Dennis
53024b9fc5
Don't raise "cannot return non-void" on Terror (#21028) 2025-03-23 07:40:57 +08:00
Dennis
7fb4d613af
Use errorSupplemental for long errors with 2 sentences (#21060) 2025-03-23 06:03:20 +08:00
Dennis
31bfe613b0
Require adjacent auto ref return as well (#21061) 2025-03-23 05:59:00 +08:00
Dennis
8a96c4745c
Fix #21054 - No location for array literal sliced from init symbol (#21055) 2025-03-22 16:26:49 +08:00
Dennis
dce0ebac9b
Fix #21052 - Missing @nogc check for enum variable initialization (#21053) 2025-03-22 07:40:34 +08:00
Dennis
d5db322fce
Merge stable (#21048)
* bump VERSION to v2.110.0

* purge changelog

* bump VERSION to v2.111.0-beta.1

* Accept __rvalue attribute on ref functions; which will force the result to be treated as __rvalue. (#20946)

This is essential to implement `move`, `forward`, etc.

* memoryerror.d: Fix AnySupported version condition (#20983)

* Fix #20982 - wrong line number in iasmgcc (#20993)

* Move genCfunc to cxxfrontend (#20992)

* druntime: Fix compilation of rt.cover on Android (#21015)

* Expose SourceLoc to C++ interface (#20980)

* [stable] C++ header fixes for declaration, expression, and typinf (#21016)

Seen either from compilation errors or missing symbols at link time.

* C++ headers: Add 3 Declaration bitfield setters/getters required by LDC

* druntime: Add module declaration to rt.invariant, to prevent conflicts with user-provided invariant.d (#21017)

* Fix #21020 - Indexing a *cast* AA yields no lvalue anymore (#21029)

* Add C++23 to CppStdRevision enum (#21043)

* Improve UFCS/property error message (#21046)

---------

Co-authored-by: Manu Evans <turkeyman@gmail.com>
Co-authored-by: Martin Kinkelin <kinke@users.noreply.github.com>
Co-authored-by: Iain Buclaw <ibuclaw@gdcproject.org>
Co-authored-by: Martin Kinkelin <noone@nowhere.com>
2025-03-21 15:48:21 +01:00
Abul Hossain Khan
dafb58bc77
Fix: Prevent ICE on final switch forward referencing its enum (#21001)
* Fix: Prevent ICE on final switch forward referencing its enum

* more simpler approach

* moved the enum member analysis

* Move enum number analysis to sementic2

* WhiteSpace Remove

* Remove Redundant Code in enumsem
2025-03-20 16:43:37 +01:00
Abul Hossain Khan
8663b6dcdc
Fix : Improved error message on override mismatch (#21023) 2025-03-18 08:28:57 +08:00
Paul Backus
7c95446800
Don't parse lambda as UDA without parentheses (#21009)
This brings the compiler's behavior in line with the language spec.

Fixes dlang/dlang.org#4137
2025-03-17 08:31:39 +08:00
Abul Hossain Khan
cf2674f689
Fix #20075 - Improve error message for immutable constructor type mismatch (#20990) 2025-03-16 08:00:27 +08:00
Abul Hossain Khan
6476cebd44
Fix #20318 Compiler should explain why implicit conversion to mutable fails (#20984) 2025-03-14 19:09:40 +08:00
Abul Hossain Khan
35f1146a1b
Fixes the invariant not called on extern(C++) classes issue (#20981) 2025-03-13 18:36:45 +08:00
Walter Bright
d1f5972b54
getting first two tests in exe1.c to run (#20968) 2025-03-08 22:49:35 -08:00
Walter Bright
8812065e8b
fix #20960 i = i && 1; fails at runtime (#20961) 2025-03-07 11:42:12 +08:00
Walter Bright
42619075eb
add exe1.c to test suite (#20957) 2025-03-06 12:25:59 -08:00
Dennis Korpel
5375db4f76 Merge branch 'stable' into merge-stable 2025-03-05 11:03:30 +01:00
Walter Bright
73158d8a78 add Placement New 2025-03-03 16:23:02 +10:00
Dennis
2c304a4377
Fix #20929 - #line directives mess up -verrors=context (#20930) 2025-02-28 23:47:26 +01:00
Dennis
3945e81615
Fix #20907 - DMD segfaults with static array length parameter derived from left-shifted template parameter property (#20919) 2025-02-28 21:46:10 +01:00
Dennis
fcc982617a
Use typed STC instead of StorageClass / ulong (#20928) 2025-02-28 19:53:22 +01:00
Walter Bright
beef42ebb4
fix #20912 lexing problem with #define // comments (#20914) 2025-02-25 17:34:19 +08:00
Dennis
1d8658d722
Fix #20889 - ImportC: Usage of typedef types decays to original type (#20904) 2025-02-20 15:01:09 +01:00
Dennis
54a142412c
Improve error for failing opDispatch instantiation (#20902) 2025-02-20 10:40:10 +01:00
The Dlang Bot
016c38e276
Merge pull request #20863 from rainers/rainer_aa_fak_entry_ti
Fix issue #17503 - Associative Arrays improperly register a GC-allocated TypeInfo for element cleanup

Signed-off-by: Nicholas Wilson <thewilsonator@users.noreply.github.com>
Signed-off-by: Steven Schveighoffer <schveiguy@users.noreply.github.com>
Merged-on-behalf-of: Steven Schveighoffer <schveiguy@users.noreply.github.com>
2025-02-19 17:59:27 +01:00
Dennis
34cf3a9503
Fix #20894 (#20895)
- pragma(msg) interprets printf format specifiers
2025-02-19 13:42:21 +08:00
Dennis
0e5c41f799
Escape backticks in error messages (#20893) 2025-02-19 07:06:47 +08:00
Dennis
e082ce247a
Expand toErrMsg to other types (#20896) 2025-02-19 06:39:32 +08:00
Elias Batek
f68ca2cbe0
Fix #20888 - Compiler spits out implicit conversion technobabble when a return statement doesn't match the return type of a function (#20890) 2025-02-18 16:55:56 +08:00
Rainer
28364abd38 generate full AA typeinfo in InExp 2025-02-18 09:22:39 +01:00
Rainer
7496f54fc4 substitute inout with const in key and value types 2025-02-18 08:09:51 +01:00
Dennis Korpel
b5e0bee399 Fix fail_compilation/retscope TEST_OUTPUT blocks 2025-02-17 23:29:05 +01:00
Dennis Korpel
3efb88d327 Remove redundant tests 2025-02-17 19:33:21 +01:00
Dennis Korpel
b58d9113ba Simplify linkage_location unittest 2025-02-17 19:32:04 +01:00
Dennis
c0c1b0ab12
Use __FILE__, __LINE__ for templated tracegc hooks (#20882) 2025-02-17 11:53:16 +01:00
Dennis Korpel
efd10b140c Print function bodies instead of __lambda in error messages 2025-02-17 00:41:33 +01:00
Dennis Korpel
eb083c06d9 Fix #20859 - ICE: class with __vtbl field name causes segfault in Scope::inCfile 2025-02-16 23:45:36 +01:00
Dennis
961862c455
Deprecate typesafe variadic class arguments (#20673) 2025-02-16 21:35:11 +01:00
Dennis
9f33f031f0
Rephrase "no identifier for declarator" parse error (#20872) 2025-02-16 08:09:43 +08:00
Dennis
4b57724c91
Improve parser errors for statements at global scope (#20871) 2025-02-15 23:50:34 +01:00
Dennis
f37cfdf837
Fix #20831 - Mangle conflict after ImportC statement expression gets expanded from macro (#20854) 2025-02-12 20:44:16 +08:00