text: ﻿using Nemerle;
  using Nemerle.Collections;
  using Nemerle.Extensions;
  using Nemerle.Text;
  using Nemerle.Utility;
  
  using System;
  using System.Collections.Generic;
  using System.Linq;
  using System.Threading;
  
  namespace Nitra.Typing
  {
    [Record]
    public abstract class SingleDefSymbol : Symbol
    {
      Definition : Location { get; }
  
      public this(definition : Location, name : string)
      {
        base(name);
        Definition = definition;
      }
  
      public this(definition : Located, name : string)
      {
        this(definition.Location, name)
      }
  
      public this(loc : Located)
      {
        this(loc.GetText(), loc.Location);
      }
  
      public this(loc : Location)
      {
        this(loc.GetText(), loc);
      }
  
      public override Locations : list[Location] { get { [Definition] } }
      public override FirstLocation : Location { get { Definition } }
    }
  }
  