private IdRegion(Bpl.IToken tok, IVariable v, bool isDefinition, string kind, ICallable callableContext, ModuleDefinition context) { Contract.Requires(tok != null); Contract.Requires(v != null); Start = tok.pos; Length = v.DisplayName.Length; if (kind == null) { // use default if (v is LocalVariable) { kind = "local variable"; } else if (v is BoundVar) { kind = "bound variable"; } else { var formal = (Formal)v; kind = formal.InParam ? "in-parameter" : "out-parameter"; if (callableContext is TwoStateLemma && !formal.IsOld) { kind = "new " + kind; } if (formal is ImplicitFormal) { kind = "implicit " + kind; } } } Variable = v; HoverText = string.Format("({2}{3}) {0}: {1}", v.DisplayName, v.Type.TypeName(context), v.IsGhost ? "ghost " : "", kind); Kind = !isDefinition ? OccurrenceKind.Use : LocalVariable.HasWildcardName(v) ? OccurrenceKind.WildDefinition : OccurrenceKind.Definition; }