Compiler error when doing a macro with params
От: Liviu1  
Дата: 23.08.11 21:58
Оценка:
Using sources from 20/08/2011

C:\Program Files (x86)\Nemerle\Net-4.0\Nemerle.MSBuild.targets(219,9): error : Internal compiler error 'expr list?', please report a bug to bugs.nemerle.org. You can try modifying program near this location.
C:\Program Files (x86)\Nemerle\Net-4.0\Nemerle.MSBuild.targets(219,9): error : internal compiler error: assertion failed in file ncc\parsing\MainParser-Extensions.n, line 447: expr list?
at Nemerle.Compiler.MainParser._N_loop_33329(_N_closure_33299 _N_parse_grammar_rule_cp_33328, list`1 acc, GrammarElement x) in F:\Projects\NemerleSrc\nemerle\ncc\parsing\MainParser-Extensions.n:line 447
at Nemerle.Compiler.MainParser.parse_grammar_rule(GrammarElement tree, TokenStoppers stop, AttributeTargets target) in F:\Projects\NemerleSrc\nemerle\ncc\parsing\MainParser-Extensions.n:line 503
at Nemerle.Compiler.MainParser.parse_syntax_definition(GrammarElement tree, TokenStoppers stop) in F:\Projects\NemerleSrc\nemerle\ncc\parsing\MainParser-Extensions.n:line 284
at Nemerle.Compiler.MainParser.parse_expr(TokenStoppers stop) in F:\Projects\NemerleSrc\nemerle\ncc\parsing\MainParser.n:line 2515
at Nemerle.Compiler.MainParser.parse_embedded_expr(TokenStoppers stop) in F:\Projects\NemerleSrc\nemerle\ncc\parsing\MainParser.n:line 2927
at Nemerle.Compiler.MainParser.parse_expr(TokenStoppers stop) in F:\Projects\NemerleSrc\nemerle\ncc\parsing\MainParser.n:line 2534
at Nemerle.Compiler.MainParser.parse_expr_sequence(TokenStoppers stop, list`1 result) in F:\Projects\NemerleSrc\nemerle\ncc\parsing\MainParser.n:line 3414
at Nemerle.Compiler.MainParser.parse_expr_sequence(Token group, list`1 acc) in F:\Projects\NemerleSrc\nemerle\ncc\parsing\MainParser.n:line 3317
at Nemerle.Compiler.MainParser.parse_expr_sequence(Token group) in F:\Projects\NemerleSrc\nemerle\ncc\parsing\MainParser.n:line 3311
at Nemerle.Compiler.MainParser.ParseBlock(BracesGroup tok, list`1 parms) in F:\Projects\NemerleSrc\nemerle\ncc\parsing\MainParser.n:line 2340
at Nemerle.Compiler.MainParser.parse_method(PFunHeader h, Modifiers modifiers, Modifiers return_value_modifiers) in F:\Projects\NemerleSrc\nemerle\ncc\parsing\MainParser.n:line 1248
at Nemerle.Compiler.MainParser.ParseClassMember(String parentType, List`1 members) in F:\Projects\NemerleSrc\nemerle\ncc\parsing\MainParser.n:line 1166
at Nemerle.Compiler.MainParser.ParseClassMembers[T](Token first, String parentType) in F:\Projects\NemerleSrc\nemerle\ncc\parsing\MainParser.n:line 644
at Nemerle.Compiler.MainParser._N_processType_34287(_N_closure_34275 _N_ParseTypeDeclaration_cp_34286, String key) in F:\Projects\NemerleSrc\nemerle\ncc\parsing\MainParser.n:line 959
at Nemerle.Compiler.MainParser.ParseTypeDeclaration(Modifiers mods, Location startLocation) in F:\Projects\NemerleSrc\nemerle\ncc\parsing\MainParser.n:line 1038
at Nemerle.Compiler.MainParser.ParseTypeDeclaration(Token toks) in F:\Projects\NemerleSrc\nemerle\ncc\parsing\MainParser.n:line 854
at Nemerle.Compiler.MainParser.ParseTopLevel(LooseGroup tok, list`1 acc) in F:\Projects\NemerleSrc\nemerle\ncc\parsing\MainParser.n:line 823
at Nemerle.Compiler.MainParser.ParseTopLevel(LooseGroup tok, list`1 acc) in F:\Projects\NemerleSrc\nemerle\ncc\parsing\MainParser.n:line 809
at Nemerle.Compiler.MainParser.Parse(LexerBase lex, FunctionVoid`1 tokenHandler) in F:\Projects\NemerleSrc\nemerle\ncc\parsing\MainParser.n:line 372
at Nemerle.Compiler.MainParser.Parse(LexerBase lex) in F:\Projects\NemerleSrc\nemerle\ncc\parsing\MainParser.n:line 334
at Nemerle.Compiler.DefaultParser.Parse(ISource source) in F:\Projects\NemerleSrc\nemerle\ncc\parsing\Parser.n:line 115
at Nemerle.Compiler.DispatchingFileParser.Parse(ISource source) in F:\Projects\NemerleSrc\nemerle\ncc\parsing\Parser.n:line 192
at Nemerle.Compiler.ManagerClass._N__N_lambda__27356__27400.apply(String filePath) in F:\Projects\NemerleSrc\nemerle\ncc\passes.n:line 566
at Nemerle.Collections.NList.RevMap[T,TOut](list`1 l, Function`2 convert) in F:\Projects\NemerleSrc\nemerle\lib\list.n:line 947
at Nemerle.Core.list`1.RevMap[TOut](Function`2 f) in F:\Projects\NemerleSrc\nemerle\lib\list.n:line 349
at Nemerle.Compiler.ManagerClass.Run() in F:\Projects\NemerleSrc\nemerle\ncc\passes.n:line 561
at Nemerle.CommandlineCompiler.MainClass.main_with_catching() in F:\Projects\NemerleSrc\nemerle\ncc\main.n:line 82
Done building project "CodeGenMacrosTests.nproj" -- FAILED.

macro create(typeName, params args: list[PExpr])
// See: http://nemerle.org/wiki/Macros_tutorial#Adding_new_syntax_to_the_compiler and http://nemerle.org/wiki/Syntax_extensions
syntax ("create", typeName, args)
{
Macro1Impl.DoTransform(Macros.ImplicitCTX(), typeName, args)
}

module Macro1Impl
{
public DoTransform(typer : Typer, typeName : PExpr, args : list[PExpr]) : PExpr
{
Macros.DefineCTX(typer);

<[ $typeName () ]>

}
}

TEST:
module TestNew
{
TestNew() : void
{
mutable a = create StringBuilder;
_ = a.AppendLine("x");
}
}
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.