www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.bugs - [Issue 19107] New: -de produces compilation error, -dw does not

https://issues.dlang.org/show_bug.cgi?id=19107

          Issue ID: 19107
           Summary: -de produces compilation error, -dw does not
           Product: D
           Version: D2
          Hardware: x86
                OS: All
            Status: NEW
          Severity: blocker
          Priority: P1
         Component: dmd
          Assignee: nobody puremagic.com
          Reporter: slavo5150 yahoo.com

--- sing.d
module sing;

alias I(alias A) = A;


--- git.d
import sing : I;


--- manager.d
module manager;

import std.algorithm;
import std.range;
import git;

class DManager
{
    struct Config
    {
        struct Build
        {
            struct Components
            {
                string[] getEnabledComponentNames()
                {
                    return null;
                }
            }
            Components components;
        }
        Build build;
    }
    Config config;

    void getCacheState(string[string] history)
    {
        auto componentNames = config.build.components.getEnabledComponentNames;
        auto components = componentNames.map!(componentName => componentName);

        components
        .map!(component => component)
        .map!(componentName => componentName);

        foreach (submoduleCommits; history)
        {
            componentNames.all!(componentName => componentName.I!(component =>
component));
        }
    }
}

$ dmd -c -dw manager.d
OK

$ dmd -c -de manager.d
manager.d(37): Error: template
manager.DManager.getCacheState.__foreachbody5.all!((componentName) =>
componentName.I!((component) => component)).all cannot deduce function from
argument types !()(string[]), candidates are:
/usr/include/dlang/dmd/std/algorithm/searching.d(122):       
manager.DManager.getCacheState.__foreachbody5.all!((componentName) =>
componentName.I!((component) => component)).all(Range)(Range range) if
(isInputRange!Range && is(typeof(unaryFun!pred(range.front))))

Currently blocking progress on https://github.com/dlang/dmd/pull/8443

--
Jul 22 2018