Skip to content

Commit 9ff2280

Browse files
[dtemplate.d] move deduceWildHelper to templatesem.d (dlang#21655)
remove now unused semantic import
1 parent 3108a56 commit 9ff2280

2 files changed

Lines changed: 56 additions & 63 deletions

File tree

compiler/src/dmd/dtemplate.d

Lines changed: 1 addition & 62 deletions
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,7 @@ import dmd.rootobject;
7777
import dmd.templatesem : matchWithInstance, formatParamsWithTiargs, leastAsSpecialized,
7878
deduceType, getExpression;
7979
import dmd.tokens;
80-
import dmd.typesem : typeSemantic, merge2, resolve, toDsymbol, isBaseOf, unqualify, resolveNamedArgs;
80+
import dmd.typesem : typeSemantic, merge2, resolve, toDsymbol, isBaseOf, resolveNamedArgs;
8181
import dmd.visitor;
8282

8383
import dmd.templateparamsem;
@@ -909,67 +909,6 @@ extern (C++) final class TypeDeduced : Type
909909

910910
/* ======================== Type ============================================ */
911911

912-
private auto X(T, U)(T m, U n)
913-
{
914-
return (m << 4) | n;
915-
}
916-
917-
ubyte deduceWildHelper(Type t, Type* at, Type tparam)
918-
{
919-
if ((tparam.mod & MODFlags.wild) == 0)
920-
return 0;
921-
922-
*at = null;
923-
924-
switch (X(tparam.mod, t.mod))
925-
{
926-
case X(MODFlags.wild, 0):
927-
case X(MODFlags.wild, MODFlags.const_):
928-
case X(MODFlags.wild, MODFlags.shared_):
929-
case X(MODFlags.wild, MODFlags.shared_ | MODFlags.const_):
930-
case X(MODFlags.wild, MODFlags.immutable_):
931-
case X(MODFlags.wildconst, 0):
932-
case X(MODFlags.wildconst, MODFlags.const_):
933-
case X(MODFlags.wildconst, MODFlags.shared_):
934-
case X(MODFlags.wildconst, MODFlags.shared_ | MODFlags.const_):
935-
case X(MODFlags.wildconst, MODFlags.immutable_):
936-
case X(MODFlags.shared_ | MODFlags.wild, MODFlags.shared_):
937-
case X(MODFlags.shared_ | MODFlags.wild, MODFlags.shared_ | MODFlags.const_):
938-
case X(MODFlags.shared_ | MODFlags.wild, MODFlags.immutable_):
939-
case X(MODFlags.shared_ | MODFlags.wildconst, MODFlags.shared_):
940-
case X(MODFlags.shared_ | MODFlags.wildconst, MODFlags.shared_ | MODFlags.const_):
941-
case X(MODFlags.shared_ | MODFlags.wildconst, MODFlags.immutable_):
942-
{
943-
ubyte wm = (t.mod & ~MODFlags.shared_);
944-
if (wm == 0)
945-
wm = MODFlags.mutable;
946-
ubyte m = (t.mod & (MODFlags.const_ | MODFlags.immutable_)) | (tparam.mod & t.mod & MODFlags.shared_);
947-
*at = t.unqualify(m);
948-
return wm;
949-
}
950-
case X(MODFlags.wild, MODFlags.wild):
951-
case X(MODFlags.wild, MODFlags.wildconst):
952-
case X(MODFlags.wild, MODFlags.shared_ | MODFlags.wild):
953-
case X(MODFlags.wild, MODFlags.shared_ | MODFlags.wildconst):
954-
case X(MODFlags.wildconst, MODFlags.wild):
955-
case X(MODFlags.wildconst, MODFlags.wildconst):
956-
case X(MODFlags.wildconst, MODFlags.shared_ | MODFlags.wild):
957-
case X(MODFlags.wildconst, MODFlags.shared_ | MODFlags.wildconst):
958-
case X(MODFlags.shared_ | MODFlags.wild, MODFlags.shared_ | MODFlags.wild):
959-
case X(MODFlags.shared_ | MODFlags.wild, MODFlags.shared_ | MODFlags.wildconst):
960-
case X(MODFlags.shared_ | MODFlags.wildconst, MODFlags.shared_ | MODFlags.wild):
961-
case X(MODFlags.shared_ | MODFlags.wildconst, MODFlags.shared_ | MODFlags.wildconst):
962-
{
963-
*at = t.unqualify(tparam.mod & t.mod);
964-
return MODFlags.wild;
965-
}
966-
default:
967-
return 0;
968-
}
969-
}
970-
971-
972-
973912
/***********************************************************
974913
* Check whether the type t representation relies on one or more the template parameters.
975914
* Params:

compiler/src/dmd/templatesem.d

Lines changed: 55 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2757,7 +2757,61 @@ private auto X(T, U)(T m, U n)
27572757
return (m << 4) | n;
27582758
}
27592759

2760-
MATCH deduceTypeHelper(Type t, out Type at, Type tparam)
2760+
private ubyte deduceWildHelper(Type t, Type* at, Type tparam)
2761+
{
2762+
if ((tparam.mod & MODFlags.wild) == 0)
2763+
return 0;
2764+
2765+
*at = null;
2766+
2767+
switch (X(tparam.mod, t.mod))
2768+
{
2769+
case X(MODFlags.wild, 0):
2770+
case X(MODFlags.wild, MODFlags.const_):
2771+
case X(MODFlags.wild, MODFlags.shared_):
2772+
case X(MODFlags.wild, MODFlags.shared_ | MODFlags.const_):
2773+
case X(MODFlags.wild, MODFlags.immutable_):
2774+
case X(MODFlags.wildconst, 0):
2775+
case X(MODFlags.wildconst, MODFlags.const_):
2776+
case X(MODFlags.wildconst, MODFlags.shared_):
2777+
case X(MODFlags.wildconst, MODFlags.shared_ | MODFlags.const_):
2778+
case X(MODFlags.wildconst, MODFlags.immutable_):
2779+
case X(MODFlags.shared_ | MODFlags.wild, MODFlags.shared_):
2780+
case X(MODFlags.shared_ | MODFlags.wild, MODFlags.shared_ | MODFlags.const_):
2781+
case X(MODFlags.shared_ | MODFlags.wild, MODFlags.immutable_):
2782+
case X(MODFlags.shared_ | MODFlags.wildconst, MODFlags.shared_):
2783+
case X(MODFlags.shared_ | MODFlags.wildconst, MODFlags.shared_ | MODFlags.const_):
2784+
case X(MODFlags.shared_ | MODFlags.wildconst, MODFlags.immutable_):
2785+
{
2786+
ubyte wm = (t.mod & ~MODFlags.shared_);
2787+
if (wm == 0)
2788+
wm = MODFlags.mutable;
2789+
ubyte m = (t.mod & (MODFlags.const_ | MODFlags.immutable_)) | (tparam.mod & t.mod & MODFlags.shared_);
2790+
*at = t.unqualify(m);
2791+
return wm;
2792+
}
2793+
case X(MODFlags.wild, MODFlags.wild):
2794+
case X(MODFlags.wild, MODFlags.wildconst):
2795+
case X(MODFlags.wild, MODFlags.shared_ | MODFlags.wild):
2796+
case X(MODFlags.wild, MODFlags.shared_ | MODFlags.wildconst):
2797+
case X(MODFlags.wildconst, MODFlags.wild):
2798+
case X(MODFlags.wildconst, MODFlags.wildconst):
2799+
case X(MODFlags.wildconst, MODFlags.shared_ | MODFlags.wild):
2800+
case X(MODFlags.wildconst, MODFlags.shared_ | MODFlags.wildconst):
2801+
case X(MODFlags.shared_ | MODFlags.wild, MODFlags.shared_ | MODFlags.wild):
2802+
case X(MODFlags.shared_ | MODFlags.wild, MODFlags.shared_ | MODFlags.wildconst):
2803+
case X(MODFlags.shared_ | MODFlags.wildconst, MODFlags.shared_ | MODFlags.wild):
2804+
case X(MODFlags.shared_ | MODFlags.wildconst, MODFlags.shared_ | MODFlags.wildconst):
2805+
{
2806+
*at = t.unqualify(tparam.mod & t.mod);
2807+
return MODFlags.wild;
2808+
}
2809+
default:
2810+
return 0;
2811+
}
2812+
}
2813+
2814+
private MATCH deduceTypeHelper(Type t, out Type at, Type tparam)
27612815
{
27622816
// 9*9 == 81 cases
27632817
switch (X(tparam.mod, t.mod))

0 commit comments

Comments
 (0)