refs #7642
Change-Id: I7f9b3b45d545e2fe793fcaa93b9d392972f0e53b
@Override
public Expression simplify(SimplificationContext context) {
@Override
public Expression simplify(SimplificationContext context) {
+ //System.out.println("--------");
context.pushLocation(location);
try {
context.pushLocation(location);
try {
- CompiledQualifier cq = qualifier.compile(context);
+ CompiledQualifier cq = qualifier.compile(context);
+ /*
+ System.out.println("cq.pattern = " + cq.pattern);
+ System.out.println("cq.value = " + cq.value);
+ System.out.println("head = " + head);
+ */
Expression exp = context.mapList(
context.lambda(cq.pattern, head),
cq.value);
Expression exp = context.mapList(
context.lambda(cq.pattern, head),
cq.value);
- //System.out.println("simplified: " + exp);
+ //System.out.println("simplified = " + exp);
/*try {
exp.validateType(context.getEnvironment());
} catch (TypeValidationException e) {
/*try {
exp.validateType(context.getEnvironment());
} catch (TypeValidationException e) {
freeVariables.remove(variable);
}
freeVariables.remove(variable);
}
+ @Override
+ public void visit(EAsPattern expression) {
+ if(expression.var != null)
+ freeVariables.add(expression.var);
+ expression.pattern.accept(this);
+ }
+
public THashSet<Variable> getFreeVariables() {
return freeVariables;
}
public THashSet<Variable> getFreeVariables() {
return freeVariables;
}
@Test public void LambdaMatch() { test(); }
@Test public void Layout1() { test(); }
@Test public void List() { test(); }
@Test public void LambdaMatch() { test(); }
@Test public void Layout1() { test(); }
@Test public void List() { test(); }
+ @Test public void ListComprehensionBug1() { test(); }
@Test public void ListError1() { test(); }
@Test public void ListError2() { test(); }
@Test public void ListFunctions() { test(); }
@Test public void ListError1() { test(); }
@Test public void ListError2() { test(); }
@Test public void ListFunctions() { test(); }
--- /dev/null
+import "Prelude"
+
+f :: [(String,String)] -> [(String,String,String)]
+f l = [(show m,x,y) | m@(x,y) <-l ]
+
+main = f []
+--
+[]