public override AstVisitAction VisitUnaryExpression(UnaryExpressionAst unaryExpressionAst) { var childVariableExpressionAst = unaryExpressionAst.Child as VariableExpressionAst; var childVariable = childVariableExpressionAst == null ? null : GetVariable(childVariableExpressionAst); var childVariableValue = childVariable == null ? null : childVariable.Value; switch (unaryExpressionAst.TokenKind) { case TokenKind.PostfixPlusPlus: if (childVariable == null) throw new NotImplementedException(unaryExpressionAst.ToString()); if (childVariableValue is PSObject) { if (this._writeSideEffectsToPipeline) this._pipelineCommandRuntime.WriteObject(childVariable.Value); childVariable.Value = PSObject.AsPSObject(((int)((PSObject)childVariableValue).BaseObject) + 1); } else throw new NotImplementedException(childVariableValue.ToString()); break; case TokenKind.PlusPlus: if (childVariable == null) throw new NotImplementedException(unaryExpressionAst.ToString()); if (childVariableValue is PSObject) { childVariable.Value = PSObject.AsPSObject(((int)((PSObject)childVariableValue).BaseObject) + 1); if (this._writeSideEffectsToPipeline) this._pipelineCommandRuntime.WriteObject(childVariable.Value); } else throw new NotImplementedException(childVariableValue.ToString()); break; default: throw new NotImplementedException(unaryExpressionAst.ToString()); } return AstVisitAction.SkipChildren; }
public override AstVisitAction VisitUnaryExpression(UnaryExpressionAst unaryExpressionAst) { switch (unaryExpressionAst.TokenKind) { case TokenKind.PostfixPlusPlus: case TokenKind.PlusPlus: case TokenKind.MinusMinus: case TokenKind.PostfixMinusMinus: VisitIncrementDecrementExpression(unaryExpressionAst); break; case TokenKind.Not: var value = EvaluateAst(unaryExpressionAst.Child, _writeSideEffectsToPipeline); var boolValue = (bool) LanguagePrimitives.ConvertTo(value, typeof(bool)); _pipelineCommandRuntime.WriteObject(!boolValue); break; default: throw new NotImplementedException(unaryExpressionAst.ToString()); } return AstVisitAction.SkipChildren; }