mixin template's alias parameter ... ignored ?

ag0aep6g anonymous at example.com
Mon Jul 12 05:33:22 UTC 2021


On 12.07.21 03:37, someone wrote:
> I ended up with the following (as usual advice/suggestions welcomed): 
[...]> alias stringUTF16 = dstring; /// same as immutable(dchar)[];> 
alias stringUTF32 = wstring; /// same as immutable(wchar)[];
Bug: You mixed up `wstring` and `dstring`. `wstring` is UTF-16. 
`dstring` is UTF-32.

[...]
> public struct gudtUGC(typeStringUTF) { /// UniCode grapheme 
> cluster‐aware string manipulation

Style: `typeStringUTF` is a type, so it should start with a capital 
letter (`TypeStringUTF`).

[...]
>     private size_t pintSequenceCount = cast(size_t) 0;
>     private size_t pintSequenceCurrent = cast(size_t) 0;

Style: There's no need for the casts (throughout).

[...]
>     @safe public typeStringUTF encode() { /// UniCode grapheme cluster 
> to UniCode UTF‐encoded string
> 
>        scope typeStringUTF lstrSequence = null;
[...]
>        return lstrSequence;
> 
>     }

Bug: `scope` makes no sense if you want to return `lstrSequence` 
(throughout).

>     @safe public typeStringUTF toUTFtake( /// UniCode grapheme cluster 
> to UniCode UTF‐encoded string
>        scope const size_t lintStart,
>        scope const size_t lintCount = cast(size_t) 1
>        ) {
Style: `scope` does nothing on `size_t` parameters (throughout).

[...]
>        if (lintStart <= lintStart + lintCount) {
[...]
>           scope size_t lintRange1 = lintStart - cast(size_t) 1;

Possible bug: Why subtract 1?

>           scope size_t lintRange2 = lintRange1 + lintCount;
> 
>           if (lintRange1 >= cast(size_t) 0 && lintRange2 <= 
> pintSequenceCount) {

Style: The first half of that condition is pointless. `lintRange1` is 
unsigned, so it will always be greater than or equal to 0. If you want 
to defend against overflow, you have to do it before subtracting.

[...]
>           }
> 
>        }
[...]
>     }
[...]
>     @safe public typeStringUTF toUTFpadL( /// UniCode grapheme cluster 
> to UniCode UTF‐encoded string
>        scope const size_t lintCount,
>        scope const typeStringUTF lstrPadding = cast(typeStringUTF) r" "

Style: Cast is not needed (throughout).

>        ) {
[...]
>     }
[...]
> }
[...]


More information about the Digitalmars-d-learn mailing list