Re: Concatenate strings at compile-time

2018-05-02 Thread Stefan Koch via Digitalmars-d-learn
On Wednesday, 2 May 2018 at 12:38:25 UTC, Jonathan M. Wilbur 
wrote:
I have a method that cannot be @nogc only because it 
concatenates strings for a long exception message, as seen 
below.


throw new ASN1ValuePaddingException
(
"This exception was thrown because you 
attempted to decode " ~
"an INTEGER that was encoded on more than the 
minimum " ~

"necessary bytes. " ~
notWhatYouMeantText ~ forMoreInformationText ~
debugInformationText ~ reportBugsText
);

Those variables you see are immutable. Is there a way that I 
can combine these strings together at compile time, rather than 
having a really long string that exceeds the 120 hard 
line-length limit?


This will be concatenated at compiletime and there will be no 
runtime overhead iff those are static immutable or enum.


Re: Concatenate strings at compile-time

2018-05-02 Thread rikki cattermole via Digitalmars-d-learn

On 03/05/2018 12:38 AM, Jonathan M. Wilbur wrote:
I have a method that cannot be @nogc only because it concatenates 
strings for a long exception message, as seen below.


     throw new ASN1ValuePaddingException
     (
     "This exception was thrown because you attempted to 
decode " ~

     "an INTEGER that was encoded on more than the minimum " ~
     "necessary bytes. " ~
     notWhatYouMeantText ~ forMoreInformationText ~
     debugInformationText ~ reportBugsText
     );

Those variables you see are immutable. Is there a way that I can combine 
these strings together at compile time, rather than having a really long 
string that exceeds the 120 hard line-length limit?


All strings are immutable.
But can they be enum?


Concatenate strings at compile-time

2018-05-02 Thread Jonathan M. Wilbur via Digitalmars-d-learn
I have a method that cannot be @nogc only because it concatenates 
strings for a long exception message, as seen below.


throw new ASN1ValuePaddingException
(
"This exception was thrown because you attempted 
to decode " ~
"an INTEGER that was encoded on more than the 
minimum " ~

"necessary bytes. " ~
notWhatYouMeantText ~ forMoreInformationText ~
debugInformationText ~ reportBugsText
);

Those variables you see are immutable. Is there a way that I can 
combine these strings together at compile time, rather than 
having a really long string that exceeds the 120 hard line-length 
limit?