# Why the coloring in Block construct? [duplicate]

I want a function that works like in the following example: it gets an expression which contains a variable var and evaluate it setting setting var = value.

I used Block to avoid expr being evaluated if variable var holds a value in the notebook. It seems that my function works correctly - I made also a trace - but I get var inside block coloured red and I think it's a warning from Mathematica. Can you explain to me why I obtain it? Is my code wrong? Is there a better way to obtain the desired behavior?

SetAttributes[myFunc, HoldFirst];

myFunc[{expr_, var_}, value_] :=
Block[{var}, expr /. var :> value]


-

## marked as duplicate by R. M.♦Apr 5 '13 at 13:38

There is nothing to worry about in this particular case. The only thing I would change here for some extra check is the function's signature, to be myFunc[{expr_, var_Symbol}, value_]. – Leonid Shifrin Apr 5 '13 at 10:37
The coloring is there to tell you of a possible conflict. Your function will be replacing var in both the Block and RuleDelayed with whatever you use as the second term of the first argument. It's possible that this is exactly what you intend, but it is usually not, hence the highlighting to warn.