[PEG] Ошибка компиляции в Release, DebugSymbols == true
От: gerrCrazzy  
Дата: 16.02.11 01:55
Оценка:
Собственно если в свойствах проекта в конфигурации Release установить "Debug Symbols" равным true, то компилятор показывает окно ассерта.

Минимальный код:
using Nemerle.Peg;

module Program
{    
  [PegGrammar(rule,
  grammar{
    rule : int = '1';
  })]
  public class Parser {
      rule(_ : NToken) : int {0}
  }
  Main() : void
  {
    _ = Parser();    
  }
}

Проект, на вский случай.
Re: [PEG] Ошибка компиляции в Release, DebugSymbols == true
От: WolfHound  
Дата: 16.02.11 02:14
Оценка:
Здравствуйте, gerrCrazzy, Вы писали:

C>Собственно если в свойствах проекта в конфигурации Release установить "Debug Symbols" равным true, то компилятор показывает окно ассерта.

Известная фигня. Поставь false.
В релизе используется хитрая магия которая почемуто не хочет работать вмести с "Debug Symbols".
... << RSDN@Home 1.2.0 alpha 4 rev. 1472>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re: [PEG] Ошибка компиляции в Release, DebugSymbols == true
От: VladD2 Российская Империя www.nemerle.org
Дата: 16.02.11 15:42
Оценка:
Здравствуйте, gerrCrazzy, Вы писали:

C>Собственно если в свойствах проекта в конфигурации Release установить "Debug Symbols" равным true, то компилятор показывает окно ассерта.


А ворнинги не напрягли? Компилятор же предупреждает, что так делать не стоит.

Это ошибка в SRE. Пишите в Коннект (МС).
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[2]: [PEG] Ошибка компиляции в Release, DebugSymbols == tr
От: VladD2 Российская Империя www.nemerle.org
Дата: 16.02.11 15:43
Оценка:
Здравствуйте, WolfHound, Вы писали:

WH>В релизе используется хитрая магия которая почемуто не хочет работать вмести с "Debug Symbols".


В релизе вообще мало чего работает с отладочными символами. Да и релиза не будет как такового. Оптимизации выключаются если отладочные символы включается. Причем поделать ничего нельзя, так как это SRE само добавляет отладочные атрибуты.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[2]: [offtop] Ошибка компиляции в Release, DebugSymbols ==
От: gerrCrazzy  
Дата: 16.02.11 23:09
Оценка:
Здравствуйте, VladD2, Вы писали:
VD>А ворнинги не напрягли? Компилятор же предупреждает, что так делать не стоит.

Нет, не напрягли, скорее немного расстроили. А вот это окно напрягло:

Такое поведение консольного компилятора не очень ожидаемо.
Если это баг SRE, было бы здорово, если бы warn N10010 был ошибкой.
Re[3]: [offtop] Ошибка компиляции в Release, DebugSymbols ==
От: VladD2 Российская Империя www.nemerle.org
Дата: 17.02.11 01:54
Оценка:
Здравствуйте, gerrCrazzy, Вы писали:

C>Нет, не напрягли, скорее немного расстроили. А вот это окно напрягло:

C>[]http://files.rsdn.ru/48744/assert.png[/img]
C>Такое поведение консольного компилятора не очень ожидаемо.
C>Если это баг SRE, было бы здорово, если бы warn N10010 был ошибкой.

Использовался компилятор собранный из исходников или установленный инсталлятором?
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[4]: [offtop] Ошибка компиляции в Release, DebugSymbols ==
От: gerrCrazzy  
Дата: 17.02.11 03:01
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Использовался компилятор собранный из исходников или установленный инсталлятором?


да, последний (r9596). Точнее установленный инсталлятором, собранным из ревизии 9596 (но это ведь не имеет значения?).
В GAC нет сборок Nemerle.
Ситема win2008 r2 x64

Командная строка: ncc @bfile.txt

bfile.txt:

/optimize
/no-color
/no-stdlib
/greedy-references:-
/doc:bin\Release\\ConsoleApplication1.xml
/define:TRACE
/target:exe
/debug+
/root-namespace:ConsoleApplication1

Main.n

/ref:C:\Windows\Microsoft.NET\Framework\v2.0.50727\mscorlib.dll
/ref:"C:\Program Files (x86)\Nemerle\Nemerle.dll"
/ref:"C:\Program Files (x86)\Nemerle\Nemerle.Peg.dll"
/macros:"C:\Program Files (x86)\Nemerle\Nemerle.Peg.Macros.dll"

/out:obj\Release\ConsoleApplication1.exe

Re[5]: [offtop] Ошибка компиляции в Release, DebugSymbols ==
От: hardcase Пират http://nemerle.org
Дата: 17.02.11 07:56
Оценка:
Здравствуйте, gerrCrazzy, Вы писали:

C>Здравствуйте, VladD2, Вы писали:


VD>>Использовался компилятор собранный из исходников или установленный инсталлятором?


C>да, последний (r9596). Точнее установленный инсталлятором, собранным из ревизии 9596 (но это ведь не имеет значения?).

C>В GAC нет сборок Nemerle.
C>Ситема win2008 r2 x64

C>Командная строка: ncc @bfile.txt


C>bfile.txt:

/optimize
C>/no-color
C>/no-stdlib
C>/greedy-references:-
C>/doc:bin\Release\\ConsoleApplication1.xml
C>/define:TRACE
C>/target:exe
C>/debug+
C>/root-namespace:ConsoleApplication1

C> Main.n

C>/ref:C:\Windows\Microsoft.NET\Framework\v2.0.50727\mscorlib.dll
C>/ref:"C:\Program Files (x86)\Nemerle\Nemerle.dll"
C>/ref:"C:\Program Files (x86)\Nemerle\Nemerle.Peg.dll"
C>/macros:"C:\Program Files (x86)\Nemerle\Nemerle.Peg.Macros.dll"

C>/out:obj\Release\ConsoleApplication1.exe


Компилятор будет ругаться на совмещение выделенных опций
/* иЗвиНите зА неРовнЫй поЧерК */
Re[6]: [offtop] Ошибка компиляции в Release, DebugSymbols ==
От: gerrCrazzy  
Дата: 17.02.11 21:32
Оценка:
Здравствуйте, hardcase, Вы писали:

C>>bfile.txt:

/optimize
...
C>>/debug+


H>Компилятор будет ругаться на совмещение выделенных опций


Так и речь о том, что компилятор неадекватно ругается — сначала ворнинг, потом окно, требующее действий пользователя.
Системы автодеплоймента будут рады такому развитию событий.
Re[7]: [offtop] Ошибка компиляции в Release, DebugSymbols ==
От: hardcase Пират http://nemerle.org
Дата: 18.02.11 07:38
Оценка:
Здравствуйте, gerrCrazzy, Вы писали:

C>Так и речь о том, что компилятор неадекватно ругается — сначала ворнинг, потом окно, требующее действий пользователя.

C>Системы автодеплоймента будут рады такому развитию событий.

Око требующее действий пользователя, это оставленный в коде assert2, его можно заменять на обычный assert, либо вообще выкинуть (в зависимости от ситуации).
/* иЗвиНите зА неРовнЫй поЧерК */
Re[8]: [offtop] Ошибка компиляции в Release, DebugSymbols ==
От: hardcase Пират http://nemerle.org
Дата: 18.02.11 07:43
Оценка:
Здравствуйте, hardcase, Вы писали:

H>Око требующее действий пользователя, это оставленный в коде assert2


Забыл сказать, эта штука позволяет начать отладку компилятора, если тыкнуть в кнопку "Повторить".
/* иЗвиНите зА неРовнЫй поЧерК */
Re[8]: [offtop] Ошибка компиляции в Release, DebugSymbols ==
От: VladD2 Российская Империя www.nemerle.org
Дата: 18.02.11 14:58
Оценка:
Здравствуйте, hardcase, Вы писали:

H>Око требующее действий пользователя, это оставленный в коде assert2, его можно заменять на обычный assert, либо вообще выкинуть (в зависимости от ситуации).


Вообще-то в релизе assert2 по идее не должен выдавать окон.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[9]: [offtop] Ошибка компиляции в Release, DebugSymbols ==
От: hardcase Пират http://nemerle.org
Дата: 19.02.11 12:55
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Вообще-то в релизе assert2 по идее не должен выдавать окон.


Не должен, но он это делает:
  /// Used System.Diagnostics.Debug.Assert() to display message
  macro assert2 (cond, message = <[ "" ]>)
  {
    match (cond) {
      | <[ false ]> => // skip cond in this case so it gets 'a type
        <[ System.Diagnostics.Debug.Assert(false, ($message).ToString()) ]>
      | _ => <[ 
        unless ($cond) 
        {
          def msg = "Assertion: " + $(cond.ToString() : string)
                    + "\nAt: " + $(cond.Location.File : string) + " failed.";
          System.Diagnostics.Debug.Fail(msg, ($message).ToString())
        } ]>
    }
  }
/* иЗвиНите зА неРовнЫй поЧерК */
Re[10]: [offtop] Ошибка компиляции в Release, DebugSymbols =
От: Ziaw Россия  
Дата: 19.02.11 15:45
Оценка:
Здравствуйте, hardcase, Вы писали:

H>Здравствуйте, VladD2, Вы писали:


VD>>Вообще-то в релизе assert2 по идее не должен выдавать окон.


H>Не должен, но он это делает:

H>
H>  /// Used System.Diagnostics.Debug.Assert() to display message
H>  macro assert2 (cond, message = <[ "" ]>)
H>  {
H>    match (cond) {
H>      | <[ false ]> => // skip cond in this case so it gets 'a type
H>        <[ System.Diagnostics.Debug.Assert(false, ($message).ToString()) ]>
H>      | _ => <[ 
H>        unless ($cond) 
H>        {
H>          def msg = "Assertion: " + $(cond.ToString() : string)
H>                    + "\nAt: " + $(cond.Location.File : string) + " failed.";
H>          System.Diagnostics.Debug.Fail(msg, ($message).ToString())
H>        } ]>
H>    }
H>  }
H>


Методы класса Debug не вызываются в релизе.
Re[11]: [offtop] Ошибка компиляции в Release, DebugSymbols =
От: hardcase Пират http://nemerle.org
Дата: 19.02.11 16:23
Оценка: 16 (1)
Здравствуйте, Ziaw, Вы писали:

Z>Методы класса Debug не вызываются в релизе.


Вызываются. Nemerle не контролирует наличие атрибута Conditional.
/* иЗвиНите зА неРовнЫй поЧерК */
Re[11]: [offtop] Ошибка компиляции в Release, DebugSymbols =
От: hardcase Пират http://nemerle.org
Дата: 19.02.11 17:22
Оценка:
Здравствуйте, Ziaw, Вы писали:

Z>Методы класса Debug не вызываются в релизе.


На самом деле этот баг известен давно (лень искать в трекере), я прямо сейчас смотрю можно ли что-то сделать.
В .NET-е этот атрибут используется широко и то, что компилятор его игнорирует не делает ему чести.
/* иЗвиНите зА неРовнЫй поЧерК */
Re[12]: [offtop] Ошибка компиляции в Release, DebugSymbols =
От: hardcase Пират http://nemerle.org
Дата: 20.02.11 22:22
Оценка:
Здравствуйте, hardcase, Вы писали:

H>Здравствуйте, Ziaw, Вы писали:


Z>>Методы класса Debug не вызываются в релизе.


H>Вызываются. Nemerle не контролирует наличие атрибута Conditional.


Теперь
Автор: hardcase
Дата: 21.02.11
атрибут Conditional учитывается.
/* иЗвиНите зА неРовнЫй поЧерК */
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.