public void FieldMistakenForVariable() { // Same thing happens with properties etc. Does not happen when using explicit this. CompleteInClass(@" public string Str; public void M() { Str.$ }"); //{ // "$type": "[SST:Statements.ExpressionStatement]", // "Expression": { // "$type": "[SST:Expressions.Assignable.CompletionExpression]", // "VariableReference": { // "$type": "[SST:References.VariableReference]", // "Identifier": "Str" // }, // "Token": "" // } //} AssertBody( "M", VarDecl("$0", Fix.String), Assign("$0", RefExpr(FieldRef(Fix.Field(Fix.String, Type("C"), "Str"), VarRef("this")))), ExprStmt(Fix.CompletionOnVar(VarRef("$0"), ""))); }
public void AssigningArray() { CompleteInMethod(@" var array = new[] {1, 2, 3, 4, 5}; array.$"); // Analysis will assign UnknownExpression. Should probably be ConstantValueExpression instead. AssertBody( VarDecl("array", Names.ArrayType(1, Fix.Int)), Assign("array", new ConstantValueExpression()), ExprStmt(Fix.CompletionOnVar(VarRef("array"), ""))); Assert.Fail(); }
public void UnnecessaryReassignmentOfThis() { CompleteInClass(@" public void M() { this.GetH$ }"); //C $0; //$0 = this; //$0.GetH$; AssertBody( "M", ExprStmt(Fix.CompletionOnVar(VarRef("this"), "GetH"))); }