локальные переменные не отображаются в окне Локальные
От: _Claus_  
Дата: 14.02.12 23:24
Оценка:
пример кода


  public X( expr : PExpr, typeBuilder : TypeBuilder): list[string]
      
      mutable flds = []

      def parsed_members = typeBuilder.GetParsedMembers()
      
      def type_flds(e)                
              
        | PExpr.Member(obj,  member) =>
          def n = $"$member"
          when ($"$obj" == "this" && parsed_members.Find(x => x.Name == n) != null)
            flds ::= n
            
        | _ => {}
                          
      type_flds(expr) 

      flds             //точка останова


в отмеченной точке останова, равно как и перед ней, не показываются ни flds, ни parsed_members.
ошибка?
Re: локальные переменные не отображаются в окне Локальные
От: VladD2 Российская Империя www.nemerle.org
Дата: 15.02.12 00:35
Оценка:
Здравствуйте, _Claus_, Вы писали:

_C_>в отмеченной точке останова, равно как и перед ней, не показываются ни flds, ни parsed_members.

_C_>ошибка?

К сожалению, сил на корректный вывод информации в отладчике просто не хватило. Там надо писать свой объект этим занимающийся, а информации по тому как это все делать практически нет.

Поля замыканий обычно можно видеть внутри специальных объектов которые видны в окне Local. При этом к их именам добавляются числовые суфиксы и прочая грязь.

Так же есть проблемы с просмотром значений в одноименных переменных и ряд других проблем. Если у кого-то есть желание заняться этим вопросом могу попробовать вспомнить информацию которую я нарыл в свое время когда пытался понять, что нужно сделать для ее решения.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[2]: локальные переменные не отображаются в окне Локальные
От: _Claus_  
Дата: 15.02.12 00:55
Оценка:
VD>Так же есть проблемы с просмотром значений в одноименных переменных и ряд других проблем. Если у кого-то есть желание заняться этим вопросом могу попробовать вспомнить информацию которую я нарыл в свое время когда пытался понять, что нужно сделать для ее решения.

попробовать могу.
Re[2]: локальные переменные не отображаются в окне Локальные
От: _Claus_  
Дата: 15.02.12 01:11
Оценка:
VD>Так же есть проблемы с просмотром значений в одноименных переменных и ряд других проблем. Если у кого-то есть желание заняться этим вопросом могу попробовать вспомнить информацию которую я нарыл в свое время когда пытался понять, что нужно сделать для ее решения.

насколько я могу судить проблема в том, что они, каким -то образом не формируются, если есть локальная функция, их использующая.
если таковой нет — все ок.
Re[3]: локальные переменные не отображаются в окне Локальные
От: _Claus_  
Дата: 15.02.12 01:16
Оценка:
_C_>насколько я могу судить проблема в том, что они, каким -то образом не формируются, если есть локальная функция, их использующая.
_C_>если таковой нет — все ок.

точнее формируются, но как внутренние члены класса функции. поэтому и выпадают.
Re: локальные переменные не отображаются в окне Локальные
От: _Claus_  
Дата: 16.02.12 13:55
Оценка:
_C_>в отмеченной точке останова, равно как и перед ней, не показываются ни flds, ни parsed_members.
_C_>ошибка?

на всякий случай сообщаю, что та же проблема и в генераторах.

 public d() : Seq[int]
      def z = 5
      def h = 6
      yield z + h //в Локальных нету z и h


если в 3.5 это работало, то причина устраняется в генераторе кода.
нужно z и h сделать public полями класса-функции и вернуть родные имена.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.