patch на #line hidden
От: Mace Windu  
Дата: 19.05.11 09:11
Оценка: 54 (3)
Index: ncc/parsing/Lexer.n
===================================================================
--- ncc/parsing/Lexer.n    (revision 9845)
+++ ncc/parsing/Lexer.n    (working copy)
@@ -775,8 +775,21 @@
               (-1, null)
             }
             else
-              throw LexerBase.Error ("expecting line number or `default' indicator")
+              throw LexerBase.Error ("expecting line number, `hidden' or `default' indicator")
           }
+          else if (c == 'h')
+          {
+            if (read_word () == "hidden")
+            {
+              eat_spaces ();
+              when (read_to_the_end_of_line () != "")
+                throw LexerBase.Error ("extra tokens after directive");
+              // hide next lines from debugger. See http://blogs.msdn.com/b/jmstall/archive/2005/06/19/feefee-sequencepoints.aspx
+              (0xFeeFee, "")
+            }
+            else
+              throw LexerBase.Error ("expecting line number, `hidden' or `default' indicator")
+          }
           else
           {
             def num = StringBuilder ();
@@ -796,7 +809,7 @@
               (Int32.Parse (num.ToString ()), read_to_the_end_of_line ().Trim ().Trim ('\"'))
             else
             {
-              Message.Error (this.Location, "expecting line number or `default' indicator");
+              Message.Error (this.Location, "expecting line number, `hidden' or `default' indicator");
               _ = read_to_the_end_of_line ();
               (-1, null)
             }
... << RSDN@Home 1.2.0 alpha 5 rev. 1495>>
Re: patch на #line hidden
От: hardcase Пират http://nemerle.org
Дата: 19.05.11 09:37
Оценка:
Здравствуйте, Mace Windu, Вы писали:

Это конечно здорово. Но какую проблему этот патч решает?
/* иЗвиНите зА неРовнЫй поЧерК */
Re[2]: patch на #line hidden
От: Mace Windu  
Дата: 19.05.11 09:53
Оценка:
Здравствуйте, hardcase, Вы писали:

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


H>Это конечно здорово. Но какую проблему этот патч решает?


Ну для меня это решило вопрос с компилированием кода, сгенерированного из CodeDom. Точнее частично решило, так как ещё остались баги в генераторе.
... << RSDN@Home 1.2.0 alpha 5 rev. 1495>>
Re[3]: patch на #line hidden
От: hardcase Пират http://nemerle.org
Дата: 19.05.11 10:38
Оценка:
Здравствуйте, Mace Windu, Вы писали:

MW>Ну для меня это решило вопрос с компилированием кода, сгенерированного из CodeDom. Точнее частично решило, так как ещё остались баги в генераторе.


т.е. с этим патем компилятор просто проглатывает line hidden?
/* иЗвиНите зА неРовнЫй поЧерК */
Re[4]: patch на #line hidden
От: Mace Windu  
Дата: 19.05.11 10:49
Оценка:
Здравствуйте, hardcase, Вы писали:

H>т.е. с этим патем компилятор просто проглатывает line hidden?


Ну и прячет соответствующий блок кода от отладчика
... << RSDN@Home 1.2.0 alpha 5 rev. 1495>>
Re[5]: patch на #line hidden
От: hardcase Пират http://nemerle.org
Дата: 19.05.11 11:45
Оценка:
Здравствуйте, Mace Windu, Вы писали:

MW>Ну и прячет соответствующий блок кода от отладчика


Да, действительно, не знал про константу 0xFEEFEE. В препроцессоре C# я поступил иначе.
/* иЗвиНите зА неРовнЫй поЧерК */
Re[6]: patch на #line hidden
От: VladD2 Российская Империя www.nemerle.org
Дата: 20.05.11 02:38
Оценка:
Здравствуйте, hardcase, Вы писали:

H>Да, действительно, не знал про константу 0xFEEFEE. В препроцессоре C# я поступил иначе.


Ну, так может проверить и закомитить (если все ОК) этот патч? Он полезен?
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re: patch на #line hidden
От: _nn_ www.nemerleweb.com
Дата: 22.05.11 08:36
Оценка:
Здравствуйте, Mace Windu, Вы писали:

Присутствует баг:

Тест:
module MainClass
{
    Main() : void
    {
#line 200 "Special"
        mutable i : int;    // W: Special\:200.*
        mutable j : int;    // W: Special\:201.*
#line default
        mutable c : char;   // W: 9.*
        mutable f : float;  // W: 10.*
#line hidden // numbering not affected
        mutable s : string; // W: 12.*
        mutable d : double; // W: 13.*
    }
}


Выхлоп:

Special:200:17:200:18: ←[01;33mwarning←[0m: N168: a local value i was never used

Special:200:17:200:18: ←[01;32mhint←[0m: replace name with `_' or prefix it like `_bar' to avoid the warning
Special:201:17:201:18: ←[01;33mwarning←[0m: N168: a local value j was never used

l.n:9:17:9:18: ←[01;33mwarning←[0m: N168: a local value c was never used
l.n:10:17:10:18: ←[01;33mwarning←[0m: N168: a local value f was never used
l.n:16707566:17:16707566:18: ←[01;33mwarning←[0m: N168: a local value s was never used
l.n:16707567:17:16707567:18: ←[01;33mwarning←[0m: N168: a local value d was never used

http://rsdn.nemerleweb.com
http://nemerleweb.com
Re[2]: patch на #line hidden
От: Mace Windu  
Дата: 23.05.11 12:25
Оценка:
Здравствуйте, _nn_, Вы писали:

__>Присутствует баг:


Действительно. Попробую пофиксить попозже, сейчас времени нет разбираться, а нахрапом не осилю — я в компилятор залез в день написания патча.
... << RSDN@Home 1.2.0 alpha 5 rev. 1495>>
Re[3]: patch на #line hidden
От: _nn_ www.nemerleweb.com
Дата: 23.05.11 13:56
Оценка:
Здравствуйте, Mace Windu, Вы писали:

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


__>>Присутствует баг:


MW>Действительно. Попробую пофиксить попозже, сейчас времени нет разбираться, а нахрапом не осилю — я в компилятор залез в день написания патча.


Да там несложно, я надеюсь

Кстати, попроси Влада добавить тебя в коммитеры, сможешь патч подключить после прохождения тестов.
http://rsdn.nemerleweb.com
http://nemerleweb.com
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.