예제 #1
0
 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;
 }