From b61e7bb1397147300dca3b855610d47bb778b837 Mon Sep 17 00:00:00 2001 From: Miles Lubin Date: Fri, 28 Aug 2015 22:30:59 -0600 Subject: [PATCH] parsing bugfix, closes #551 --- src/v0.4/parseExpr_staged.jl | 4 ++-- test/macros.jl | 4 ++++ 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/src/v0.4/parseExpr_staged.jl b/src/v0.4/parseExpr_staged.jl index 3d5c26938e4..52d3cc031cc 100644 --- a/src/v0.4/parseExpr_staged.jl +++ b/src/v0.4/parseExpr_staged.jl @@ -529,7 +529,7 @@ function parseExpr(x, aff::Symbol, lcoeffs::Vector, rcoeffs::Vector, newaff::Sym s = gensym() newaff_, parsed = parseExprToplevel(x.args[2], s) push!(blk.args, :($s = 0.0; $parsed)) - push!(blk.args, :($newaff = $newaff_*$newaff_)) + push!(blk.args, :($newaff = $(Expr(:call,:*,lcoeffs...,newaff_,newaff_,rcoeffs...)) + $aff)) return newaff, blk elseif x.head == :call && x.args[1] == :/ @assert length(x.args) == 3 @@ -547,4 +547,4 @@ function parseExpr(x, aff::Symbol, lcoeffs::Vector, rcoeffs::Vector, newaff::Sym end # Semi-automatically generated precompilation hints -include("precompile.jl") \ No newline at end of file +include("precompile.jl") diff --git a/test/macros.jl b/test/macros.jl index 1ee7a1c3d33..478c41719d5 100644 --- a/test/macros.jl +++ b/test/macros.jl @@ -230,6 +230,10 @@ facts("[macros] @addConstraint with quadratic") do @addConstraint(m, sum{sum{(x[i] - 2)*x[j],j=4:5},i=2:3} >= -3*x[2]*2*x[4]) @fact conToStr(m.quadconstr[end]) --> "7 x[2]*x[4] + x[3]*x[4] + x[2]*x[5] + x[3]*x[5] - 4 x[4] - 4 x[5] $geq 0" + foo(x) = x + @addConstraint(m, x[1] ≤ foo(x[1])^2) + @fact conToStr(m.quadconstr[end]) --> "-x[1]² + x[1] $leq 0" + if VERSION > v"0.4.0-" @addConstraint(m, sum{x[i],i=1:2}*sum{x[i],i=2:3} >= 0) @fact conToStr(m.quadconstr[end]) --> "x[1]*x[2] + x[2]² + x[1]*x[3] + x[2]*x[3] $geq 0"