Additional information. I extracted the verbose macro related information. Apologies for using a reply but this would make the message far too large.
This is for the working T1
:
looking for macro implementation: macro method nameFunc
calculateUndetparams: Set()
performing macro expansion pt.inescn.macros.TaskMacro.nameFunc[(String, String) => Either[pt.inescn.utils.ADWError,String]]({
((ap: String, i: String) => concatFunc(ap, i))
}) at source-/home/hmf/IdeaProjects/adw/core/src/main/scala/pt/inescn/scratchpad/Tut.scala,line-54,offset=1615
context: MacroContext(nameFunc@source-/home/hmf/IdeaProjects/adw/core/src/main/scala/pt/inescn/scratchpad/Tut.scala,line-54,offset=1615 +0)
prefix: pt.inescn.macros.TaskMacro
targs: List((String, String) => Either[pt.inescn.utils.ADWError,String])
argss: List(List({
((ap: String, i: String) => concatFunc(ap, i))
}))
paramss: List(List(value a))
binding: MacroImplBinding(false,true,pt.inescn.macros.TaskMacro$,namedFuncImpl,List(List(Other), List(Expr), List(Tag(0))),List(T))
trees: List(List(Expr[Nothing]({
((ap: String, i: String) => concatFunc(ap, i))
})))
tags: List(WeakTypeTag[(String, String) => Either[pt.inescn.utils.ADWError,String]])
macroImplArgs: List(Expr[Nothing]({
((ap: String, i: String) => concatFunc(ap, i))
}), WeakTypeTag[(String, String) => Either[pt.inescn.utils.ADWError,String]])
original:
scala.Tuple2(TaskInfo("Block(Function)", "concatFunc", scala.collection.immutable.List("ap", "i")), {
((ap: String, i: String) => concatFunc(ap, i))
})
Apply(Select(Ident(scala), TermName("Tuple2")), List(Apply(Ident(TermName("TaskInfo")), List(Literal(Constant("Block(Function)")), Literal(Constant("concatFunc")), Apply(Select(Select(Select(Ident(scala), TermName("collection")), TermName("immutable")), TermName("List")), List(Literal(Constant("ap")), Literal(Constant("i")))))), Block(List(), Function(List(ValDef(Modifiers(PARAM | SYNTHETIC), TermName("ap"), TypeTree(), EmptyTree), ValDef(Modifiers(PARAM | SYNTHETIC), TermName("i"), TypeTree(), EmptyTree)), Apply(Ident(TermName("concatFunc")), List(Ident(TermName("ap")), Ident(TermName("i"))))))))
blackbox typecheck (against pt = ?): (scala.Tuple2(TaskInfo("Block(Function)", "concatFunc", scala.collection.immutable.List("ap", "i")), {
((ap: String, i: String) => concatFunc(ap, i))
}): (pt.inescn.macros.MacroCore.TaskInfo, (String, String) => Either[pt.inescn.utils.ADWError,String]))
undetParam added: type T1
undetParam added: type T2
undetParam added: type A
undetParam inferred: type A as String
undetParam inferred: type T1 as pt.inescn.macros.MacroCore.TaskInfo
undetParam inferred: type T2 as (String, String) => Either[pt.inescn.utils.ADWError,String]
undetParam added: type I
undetParam added: type O
undetParam added: type P1
undetParam inferred: type I as String
undetParam inferred: type O as String
undetParam inferred: type P1 as String
undetParam added: type I
undetParam added: type O
undetParam added: type P1
undetParam added: type T
undetParam inferred: type T as (String, String) => Either[pt.inescn.utils.ADWError,String]
macroExpand: expander = scala.tools.nsc.typechecker.Macros$DefMacroExpander@2bf35f8b, expandee = Apply[1](TypeApply[2](Select[3](Select[4](Select[5](Select[6](Ident[7](pt#30), pt.inescn#6618), pt.inescn.macros#6642), pt.inescn.macros.TaskMacro#12699), TermName("nameFunc")#12912), List(TypeTree[8]())), List(Block[8](List(), Function[8](List(ValDef[9](Modifiers(PARAM | SYNTHETIC), TermName("ap")#33316, TypeTree[10](), EmptyTree), ValDef[9](Modifiers(PARAM | SYNTHETIC), TermName("i")#33317, TypeTree[10](), EmptyTree)), Apply[11](Ident[12](TermName("concatFunc")#14365), List(Ident[10](TermName("ap")#33316), Ident[10](TermName("i")#33317)))))))
[1] TypeRef(ThisType(scala#25), scala.Tuple2#1339, List(TypeRef(SingleType(SingleType(SingleType(SingleType(ThisType(<root>#2), pt#30), pt.inescn#6618), pt.inescn.macros#6642), pt.inescn.macros.MacroCore#12648), pt.inescn.macros.MacroCore.TaskInfo#12798, List()), TypeRef(ThisType(scala#25), scala.Function2#826, List(TypeRef(SingleType(TypeRef(ThisType(<root>#2), scala#25, List()), scala.Predef#1355), TypeName("String")#6221, List()), TypeRef(SingleType(TypeRef(ThisType(<root>#2), scala#25, List()), scala.Predef#1355), TypeName("String")#6221, List()), TypeRef(SingleType(SingleType(ThisType(<root>#2), scala#24), scala.package#1823), TypeName("Either")#2275, List(TypeRef(ThisType(pt.inescn.utils#6641), pt.inescn.utils.ADWError#12494, List()), TypeRef(SingleType(TypeRef(ThisType(<root>#2), scala#25, List()), scala.Predef#1355), TypeName("String")#6221, List())))))))
[2] MethodType(List(TermName("a")#33322), TypeRef(ThisType(scala#25), scala.Tuple2#1339, List(TypeRef(SingleType(SingleType(SingleType(SingleType(ThisType(<root>#2), pt#30), pt.inescn#6618), pt.inescn.macros#6642), pt.inescn.macros.MacroCore#12648), pt.inescn.macros.MacroCore.TaskInfo#12798, List()), TypeRef(ThisType(scala#25), scala.Function2#826, List(TypeRef(SingleType(TypeRef(ThisType(<root>#2), scala#25, List()), scala.Predef#1355), TypeName("String")#6221, List()), TypeRef(SingleType(TypeRef(ThisType(<root>#2), scala#25, List()), scala.Predef#1355), TypeName("String")#6221, List()), TypeRef(SingleType(SingleType(ThisType(<root>#2), scala#24), scala.package#1823), TypeName("Either")#2275, List(TypeRef(ThisType(pt.inescn.utils#6641), pt.inescn.utils.ADWError#12494, List()), TypeRef(SingleType(TypeRef(ThisType(<root>#2), scala#25, List()), scala.Predef#1355), TypeName("String")#6221, List()))))))))
[3] PolyType(List(TypeName("T")#12970), MethodType(List(TermName("a")#12971), TypeRef(ThisType(scala#25), scala.Tuple2#1339, List(TypeRef(SingleType(SingleType(SingleType(SingleType(ThisType(<root>#2), pt#30), pt.inescn#6618), pt.inescn.macros#6642), pt.inescn.macros.MacroCore#12648), pt.inescn.macros.MacroCore.TaskInfo#12798, List()), TypeRef(NoPrefix, TypeName("T")#12970, List())))))
[4] SingleType(SingleType(SingleType(SingleType(ThisType(<root>#2), pt#30), pt.inescn#6618), pt.inescn.macros#6642), pt.inescn.macros.TaskMacro#12699)
[5] SingleType(SingleType(SingleType(ThisType(<root>#2), pt#30), pt.inescn#6618), pt.inescn.macros#6642)
[6] SingleType(SingleType(ThisType(<root>#2), pt#30), pt.inescn#6618)
[7] SingleType(ThisType(<root>#2), pt#30)
[8] TypeRef(ThisType(scala#25), scala.Function2#826, List(TypeRef(SingleType(TypeRef(ThisType(<root>#2), scala#25, List()), scala.Predef#1355), TypeName("String")#6221, List()), TypeRef(SingleType(TypeRef(ThisType(<root>#2), scala#25, List()), scala.Predef#1355), TypeName("String")#6221, List()), TypeRef(SingleType(SingleType(ThisType(<root>#2), scala#24), scala.package#1823), TypeName("Either")#2275, List(TypeRef(ThisType(pt.inescn.utils#6641), pt.inescn.utils.ADWError#12494, List()), TypeRef(SingleType(TypeRef(ThisType(<root>#2), scala#25, List()), scala.Predef#1355), TypeName("String")#6221, List())))))
[9] NoType
[10] TypeRef(SingleType(TypeRef(ThisType(<root>#2), scala#25, List()), scala.Predef#1355), TypeName("String")#6221, List())
[11] TypeRef(SingleType(SingleType(ThisType(<root>#2), scala#24), scala.package#1823), TypeName("Either")#2275, List(TypeRef(ThisType(pt.inescn.utils#6641), pt.inescn.utils.ADWError#12494, List()), TypeRef(SingleType(TypeRef(ThisType(<root>#2), scala#25, List()), scala.Predef#1355), TypeName("String")#6221, List())))
[12] MethodType(List(TermName("ap")#31535, TermName("i")#31536), TypeRef(SingleType(SingleType(ThisType(<root>#2), scala#24), scala.package#1823), TypeName("Either")#2275, List(TypeRef(ThisType(pt.inescn.utils#6641), pt.inescn.utils.ADWError#12494, List()), TypeRef(SingleType(TypeRef(ThisType(<root>#2), scala#25, List()), scala.Predef#1355), TypeName("String")#6221, List())))), desugared = ()
looking for macro implementation: macro method nameFunc
calculateUndetparams: Set()
performing macro expansion pt.inescn.macros.TaskMacro.nameFunc[(String, String) => Either[pt.inescn.utils.ADWError,String]]({
((ap: String, i: String) => concatFunc(ap, i))
}) at source-/home/hmf/IdeaProjects/adw/core/src/main/scala/pt/inescn/scratchpad/Tut.scala,line-57,offset=1676
context: MacroContext(nameFunc@source-/home/hmf/IdeaProjects/adw/core/src/main/scala/pt/inescn/scratchpad/Tut.scala,line-57,offset=1676 +0)
prefix: pt.inescn.macros.TaskMacro
targs: List((String, String) => Either[pt.inescn.utils.ADWError,String])
argss: List(List({
((ap: String, i: String) => concatFunc(ap, i))
}))
paramss: List(List(value a))
binding: MacroImplBinding(false,true,pt.inescn.macros.TaskMacro$,namedFuncImpl,List(List(Other), List(Expr), List(Tag(0))),List(T))
trees: List(List(Expr[Nothing]({
((ap: String, i: String) => concatFunc(ap, i))
})))
tags: List(WeakTypeTag[(String, String) => Either[pt.inescn.utils.ADWError,String]])
macroImplArgs: List(Expr[Nothing]({
((ap: String, i: String) => concatFunc(ap, i))
}), WeakTypeTag[(String, String) => Either[pt.inescn.utils.ADWError,String]])
original:
scala.Tuple2(TaskInfo("Block(Function)", "concatFunc", scala.collection.immutable.List("ap", "i")), {
((ap: String, i: String) => concatFunc(ap, i))
})
Apply(Select(Ident(scala), TermName("Tuple2")), List(Apply(Ident(TermName("TaskInfo")), List(Literal(Constant("Block(Function)")), Literal(Constant("concatFunc")), Apply(Select(Select(Select(Ident(scala), TermName("collection")), TermName("immutable")), TermName("List")), List(Literal(Constant("ap")), Literal(Constant("i")))))), Block(List(), Function(List(ValDef(Modifiers(PARAM | SYNTHETIC), TermName("ap"), TypeTree(), EmptyTree), ValDef(Modifiers(PARAM | SYNTHETIC), TermName("i"), TypeTree(), EmptyTree)), Apply(Ident(TermName("concatFunc")), List(Ident(TermName("ap")), Ident(TermName("i"))))))))
blackbox typecheck (against pt = (pt.inescn.macros.MacroCore.TaskInfo, (?, ?) => pt.inescn.search.stream.Tasks.Out[?])): (scala.Tuple2(TaskInfo("Block(Function)", "concatFunc", scala.collection.immutable.List("ap", "i")), {
((ap: String, i: String) => concatFunc(ap, i))
}): (pt.inescn.macros.MacroCore.TaskInfo, (String, String) => Either[pt.inescn.utils.ADWError,String]))
undetParam added: type T1
undetParam added: type T2
undetParam added: type A
undetParam inferred: type A as String
undetParam inferred: type T1 as pt.inescn.macros.MacroCore.TaskInfo
undetParam inferred: type T2 as (String, String) => Either[pt.inescn.utils.ADWError,String]
undetParam inferred: type I as String
undetParam inferred: type O as String
undetParam inferred: type P1 as String
undetParam added: type T
undetParam inferred: type T as (String, String) => Either[pt.inescn.utils.ADWError,String]
undetParam added: type T
undetParam inferred: type T as (String, String) => Either[pt.inescn.utils.ADWError,String]
undetParam added: type T
undetParam inferred: type T as (String, String) => Either[pt.inescn.utils.ADWError,String]
undetParam added: type T
undetParam inferred: type T as (String, String) => Either[pt.inescn.utils.ADWError,String]
undetParam added: type T
undetParam inferred: type T as (String, String) => Either[pt.inescn.utils.ADWError,String]
undetParam added: type T
undetParam inferred: type T as (String, String) => Either[pt.inescn.utils.ADWError,String]
undetParam added: type T
undetParam inferred: type T as (String, String) => Either[pt.inescn.utils.ADWError,String]
undetParam added: type T
undetParam inferred: type T as (String, String) => Either[pt.inescn.utils.ADWError,String]
undetParam added: type T
undetParam inferred: type T as (String, String) => Either[pt.inescn.utils.ADWError,String]
undetParam added: type T
undetParam inferred: type T as (String, String) => Either[pt.inescn.utils.ADWError,String]
undetParam added: type I
undetParam added: type O
undetParam added: type P1
undetParam added: type T
undetParam inferred: type T as (String, String) => Either[pt.inescn.utils.ADWError,String]
macroExpand: expander = scala.tools.nsc.typechecker.Macros$DefMacroExpander@7157e2a4, expandee = Apply[1](TypeApply[2](Select[3](Select[4](Select[5](Select[6](Ident[7](pt#30), pt.inescn#6618), pt.inescn.macros#6642), pt.inescn.macros.TaskMacro#12699), TermName("nameFunc")#12912), List(TypeTree[8]())), List(Block[8](List(), Function[8](List(ValDef[9](Modifiers(PARAM | SYNTHETIC), TermName("ap")#33740, TypeTree[10](), EmptyTree), ValDef[9](Modifiers(PARAM | SYNTHETIC), TermName("i")#33741, TypeTree[10](), EmptyTree)), Apply[11](Ident[12](TermName("concatFunc")#14365), List(Ident[10](TermName("ap")#33740), Ident[10](TermName("i")#33741)))))))
[1] TypeRef(ThisType(scala#25), scala.Tuple2#1339, List(TypeRef(SingleType(SingleType(SingleType(SingleType(ThisType(<root>#2), pt#30), pt.inescn#6618), pt.inescn.macros#6642), pt.inescn.macros.MacroCore#12648), pt.inescn.macros.MacroCore.TaskInfo#12798, List()), TypeRef(ThisType(scala#25), scala.Function2#826, List(TypeRef(SingleType(TypeRef(ThisType(<root>#2), scala#25, List()), scala.Predef#1355), TypeName("String")#6221, List()), TypeRef(SingleType(TypeRef(ThisType(<root>#2), scala#25, List()), scala.Predef#1355), TypeName("String")#6221, List()), TypeRef(SingleType(SingleType(ThisType(<root>#2), scala#24), scala.package#1823), TypeName("Either")#2275, List(TypeRef(ThisType(pt.inescn.utils#6641), pt.inescn.utils.ADWError#12494, List()), TypeRef(SingleType(TypeRef(ThisType(<root>#2), scala#25, List()), scala.Predef#1355), TypeName("String")#6221, List())))))))
[2] MethodType(List(TermName("a")#36040), TypeRef(ThisType(scala#25), scala.Tuple2#1339, List(TypeRef(SingleType(SingleType(SingleType(SingleType(ThisType(<root>#2), pt#30), pt.inescn#6618), pt.inescn.macros#6642), pt.inescn.macros.MacroCore#12648), pt.inescn.macros.MacroCore.TaskInfo#12798, List()), TypeRef(ThisType(scala#25), scala.Function2#826, List(TypeRef(SingleType(TypeRef(ThisType(<root>#2), scala#25, List()), scala.Predef#1355), TypeName("String")#6221, List()), TypeRef(SingleType(TypeRef(ThisType(<root>#2), scala#25, List()), scala.Predef#1355), TypeName("String")#6221, List()), TypeRef(SingleType(SingleType(ThisType(<root>#2), scala#24), scala.package#1823), TypeName("Either")#2275, List(TypeRef(ThisType(pt.inescn.utils#6641), pt.inescn.utils.ADWError#12494, List()), TypeRef(SingleType(TypeRef(ThisType(<root>#2), scala#25, List()), scala.Predef#1355), TypeName("String")#6221, List()))))))))
[3] PolyType(List(TypeName("T")#12970), MethodType(List(TermName("a")#12971), TypeRef(ThisType(scala#25), scala.Tuple2#1339, List(TypeRef(SingleType(SingleType(SingleType(SingleType(ThisType(<root>#2), pt#30), pt.inescn#6618), pt.inescn.macros#6642), pt.inescn.macros.MacroCore#12648), pt.inescn.macros.MacroCore.TaskInfo#12798, List()), TypeRef(NoPrefix, TypeName("T")#12970, List())))))
[4] SingleType(SingleType(SingleType(SingleType(ThisType(<root>#2), pt#30), pt.inescn#6618), pt.inescn.macros#6642), pt.inescn.macros.TaskMacro#12699)
[5] SingleType(SingleType(SingleType(ThisType(<root>#2), pt#30), pt.inescn#6618), pt.inescn.macros#6642)
[6] SingleType(SingleType(ThisType(<root>#2), pt#30), pt.inescn#6618)
[7] SingleType(ThisType(<root>#2), pt#30)
[8] TypeRef(ThisType(scala#25), scala.Function2#826, List(TypeRef(SingleType(TypeRef(ThisType(<root>#2), scala#25, List()), scala.Predef#1355), TypeName("String")#6221, List()), TypeRef(SingleType(TypeRef(ThisType(<root>#2), scala#25, List()), scala.Predef#1355), TypeName("String")#6221, List()), TypeRef(SingleType(SingleType(ThisType(<root>#2), scala#24), scala.package#1823), TypeName("Either")#2275, List(TypeRef(ThisType(pt.inescn.utils#6641), pt.inescn.utils.ADWError#12494, List()), TypeRef(SingleType(TypeRef(ThisType(<root>#2), scala#25, List()), scala.Predef#1355), TypeName("String")#6221, List())))))
[9] NoType
[10] TypeRef(SingleType(TypeRef(ThisType(<root>#2), scala#25, List()), scala.Predef#1355), TypeName("String")#6221, List())
[11] TypeRef(SingleType(SingleType(ThisType(<root>#2), scala#24), scala.package#1823), TypeName("Either")#2275, List(TypeRef(ThisType(pt.inescn.utils#6641), pt.inescn.utils.ADWError#12494, List()), TypeRef(SingleType(TypeRef(ThisType(<root>#2), scala#25, List()), scala.Predef#1355), TypeName("String")#6221, List())))
[12] MethodType(List(TermName("ap")#31535, TermName("i")#31536), TypeRef(SingleType(SingleType(ThisType(<root>#2), scala#24), scala.package#1823), TypeName("Either")#2275, List(TypeRef(ThisType(pt.inescn.utils#6641), pt.inescn.utils.ADWError#12494, List()), TypeRef(SingleType(TypeRef(ThisType(<root>#2), scala#25, List()), scala.Predef#1355), TypeName("String")#6221, List())))), desugared = ()
This is for the failing T
case:
performing macro expansion pt.inescn.macros.TaskMacro.nameFunc[(String, String) => Either[pt.inescn.utils.ADWError,String]]({
((ap: String, i: String) => concatFunc(ap, i))
}) at source-/home/hmf/IdeaProjects/adw/core/src/main/scala/pt/inescn/scratchpad/Tut.scala,line-62,offset=1898
context: MacroContext(nameFunc@source-/home/hmf/IdeaProjects/adw/core/src/main/scala/pt/inescn/scratchpad/Tut.scala,line-62,offset=1898 +0)
prefix: pt.inescn.macros.TaskMacro
targs: List((String, String) => Either[pt.inescn.utils.ADWError,String])
argss: List(List({
((ap: String, i: String) => concatFunc(ap, i))
}))
paramss: List(List(value a))
binding: MacroImplBinding(false,true,pt.inescn.macros.TaskMacro$,namedFuncImpl,List(List(Other), List(Expr), List(Tag(0))),List(T))
trees: List(List(Expr[Nothing]({
((ap: String, i: String) => concatFunc(ap, i))
})))
tags: List(WeakTypeTag[(String, String) => Either[pt.inescn.utils.ADWError,String]])
macroImplArgs: List(Expr[Nothing]({
((ap: String, i: String) => concatFunc(ap, i))
}), WeakTypeTag[(String, String) => Either[pt.inescn.utils.ADWError,String]])
original:
scala.Tuple2(TaskInfo("Block(Function)", "concatFunc", scala.collection.immutable.List("ap", "i")), {
((ap: String, i: String) => concatFunc(ap, i))
})
Apply(Select(Ident(scala), TermName("Tuple2")), List(Apply(Ident(TermName("TaskInfo")), List(Literal(Constant("Block(Function)")), Literal(Constant("concatFunc")), Apply(Select(Select(Select(Ident(scala), TermName("collection")), TermName("immutable")), TermName("List")), List(Literal(Constant("ap")), Literal(Constant("i")))))), Block(List(), Function(List(ValDef(Modifiers(PARAM | SYNTHETIC), TermName("ap"), TypeTree(), EmptyTree), ValDef(Modifiers(PARAM | SYNTHETIC), TermName("i"), TypeTree(), EmptyTree)), Apply(Ident(TermName("concatFunc")), List(Ident(TermName("ap")), Ident(TermName("i"))))))))
blackbox typecheck (against pt = (pt.inescn.macros.MacroCore.TaskInfo, (?, ?) => pt.inescn.search.stream.Tasks.Out[?])): (scala.Tuple2(TaskInfo("Block(Function)", "concatFunc", scala.collection.immutable.List("ap", "i")), {
((ap: String, i: String) => concatFunc(ap, i))
}): (pt.inescn.macros.MacroCore.TaskInfo, (String, String) => Either[pt.inescn.utils.ADWError,String]))
undetParam added: type T1
undetParam added: type T2
undetParam added: type A
undetParam inferred: type A as String
undetParam inferred: type T1 as pt.inescn.macros.MacroCore.TaskInfo
undetParam inferred: type T2 as (String, String) => Either[pt.inescn.utils.ADWError,String]
undetParam inferred: type I as String
undetParam inferred: type O as String
undetParam inferred: type P1 as Char
undetParam added: type T
e[0m[e[0me[31merrore[0m] e[0me[0m/home/hmf/IdeaProjects/adw/core/src/main/scala/pt/inescn/scratchpad/Tut.scala:62:52: type mismatch;e[0m
e[0m[e[0me[31merrore[0m] e[0me[0m found : (pt.inescn.macros.MacroCore.TaskInfo, (String, String) => Either[pt.inescn.utils.ADWError,String])e[0m
e[0m[e[0me[31merrore[0m] e[0me[0m required: (pt.inescn.macros.MacroCore.TaskInfo, (Char, String) => pt.inescn.search.stream.Tasks.Out[String])e[0m
e[0m[e[0me[31merrore[0m] e[0me[0m (which expands to) (pt.inescn.macros.MacroCore.TaskInfo, (Char, String) => scala.util.Either[pt.inescn.utils.ADWError,String])e[0m
e[0m[e[0me[31merrore[0m] e[0me[0m val concat0 = pt.inescn.search.stream.Tasks.T(concatFunc _, ap)e[0m
e[0m[e[0me[31merrore[0m] e[0me[0m ^e[0m
EDIT: trying to see were the difference are. The blackbox typecheck
are not the same. In the case T1
that succeeds we have:
blackbox typecheck (against pt = ?): (scala.Tuple2(TaskInfo("Block(Function)", "concatFunc", scala.collection.immutable.List("ap", "i")), {
((ap: String, i: String) => concatFunc(ap, i))
}): (pt.inescn.macros.MacroCore.TaskInfo, (String, String) => Either[pt.inescn.utils.ADWError,String]))
but for the failing T
we have:
blackbox typecheck (against pt = (pt.inescn.macros.MacroCore.TaskInfo, (?, ?) => pt.inescn.search.stream.Tasks.Out[?])): (scala.Tuple2(TaskInfo("Block(Function)", "concatFunc", scala.collection.immutable.List("ap", "i")), {
((ap: String, i: String) => concatFunc(ap, i))
}): (pt.inescn.macros.MacroCore.TaskInfo, (String, String) => Either[pt.inescn.utils.ADWError,String]))
Although different the types seem to match. And their is not Char
to be found in the case of T1
function. The parameters that follow (T1,T2,A,I,O) all have the same inferred types. However P1
is different.
Maybe this can help find the problem?