@@ -1591,6 +1591,97 @@ public void ParseFile_MethodAfterGenericReturn()
15911591 }
15921592 }
15931593
1594+ [ Test ( Description = "Issue 1125" ) ]
1595+ public void ParseFile_FunctionTypesAsArguments ( )
1596+ {
1597+ using ( var resourceFile = new TestFile ( "ASCompletion.Test_Files.parser.haxe.FunctionTypesAsArgumentsTest.hx" ) )
1598+ {
1599+ var srcModel = new FileModel ( resourceFile . DestinationFile ) ;
1600+ srcModel . Context = new HaXeContext . Context ( new HaXeContext . HaXeSettings ( ) ) ;
1601+ var model = ASFileParser . ParseFile ( srcModel ) ;
1602+ var classModel = model . Classes [ 0 ] ;
1603+ Assert . AreEqual ( "Test" , classModel . Name ) ;
1604+ Assert . AreEqual ( FlagType . Class , classModel . Flags & FlagType . Class ) ;
1605+ Assert . AreEqual ( 2 , classModel . LineFrom ) ;
1606+ Assert . AreEqual ( 15 , classModel . LineTo ) ;
1607+ Assert . AreEqual ( 3 , classModel . Members . Count ) ;
1608+
1609+ var memberModel = classModel . Members [ 0 ] ;
1610+ Assert . AreEqual ( "func1" , memberModel . Name ) ;
1611+ Assert . AreEqual ( "Array<Dynamic>" , memberModel . Type ) ;
1612+ var flags = FlagType . Function ;
1613+ Assert . AreEqual ( flags , memberModel . Flags & flags ) ;
1614+ Assert . AreEqual ( Visibility . Private , memberModel . Access ) ;
1615+ Assert . AreEqual ( 4 , memberModel . LineFrom ) ;
1616+ Assert . AreEqual ( 6 , memberModel . LineTo ) ;
1617+ Assert . AreEqual ( 1 , memberModel . Parameters . Count ) ;
1618+ Assert . AreEqual ( "arg" , memberModel . Parameters [ 0 ] . Name ) ;
1619+ Assert . AreEqual ( "(Float->Int)->(Int->Array<Dynamic>)" , memberModel . Parameters [ 0 ] . Type ) ;
1620+
1621+ memberModel = classModel . Members [ 1 ] ;
1622+ Assert . AreEqual ( "func2" , memberModel . Name ) ;
1623+ Assert . AreEqual ( null , memberModel . Type ) ;
1624+ flags = FlagType . Function ;
1625+ Assert . AreEqual ( flags , memberModel . Flags & flags ) ;
1626+ Assert . AreEqual ( Visibility . Public , memberModel . Access ) ;
1627+ Assert . AreEqual ( 8 , memberModel . LineFrom ) ;
1628+ Assert . AreEqual ( 10 , memberModel . LineTo ) ;
1629+ Assert . AreEqual ( 2 , memberModel . Parameters . Count ) ;
1630+ Assert . AreEqual ( "arg1" , memberModel . Parameters [ 0 ] . Name ) ;
1631+ Assert . AreEqual ( "Int->Void" , memberModel . Parameters [ 0 ] . Type ) ;
1632+ Assert . AreEqual ( "arg2" , memberModel . Parameters [ 1 ] . Name ) ;
1633+ Assert . AreEqual ( "Dynamic" , memberModel . Parameters [ 1 ] . Type ) ;
1634+
1635+ memberModel = classModel . Members [ 2 ] ;
1636+ Assert . AreEqual ( "func3" , memberModel . Name ) ;
1637+ Assert . AreEqual ( "Int" , memberModel . Type ) ;
1638+ flags = FlagType . Function ;
1639+ Assert . AreEqual ( flags , memberModel . Flags & flags ) ;
1640+ Assert . AreEqual ( Visibility . Private , memberModel . Access ) ;
1641+ Assert . AreEqual ( 12 , memberModel . LineFrom ) ;
1642+ Assert . AreEqual ( 14 , memberModel . LineTo ) ;
1643+ Assert . AreEqual ( 1 , memberModel . Parameters . Count ) ;
1644+ Assert . AreEqual ( "arg" , memberModel . Parameters [ 0 ] . Name ) ;
1645+ Assert . AreEqual ( "Float" , memberModel . Parameters [ 0 ] . Type ) ;
1646+ }
1647+ }
1648+
1649+ [ Test ( Description = "Issue 1141" ) ]
1650+ public void ParseFile_KeywordAndUnderscoreInName ( )
1651+ {
1652+ using ( var resourceFile = new TestFile ( "ASCompletion.Test_Files.parser.haxe.KeywordAndUnderscoreInNameTest.hx" ) )
1653+ {
1654+ var srcModel = new FileModel ( resourceFile . DestinationFile ) ;
1655+ srcModel . Context = new HaXeContext . Context ( new HaXeContext . HaXeSettings ( ) ) ;
1656+ var model = ASFileParser . ParseFile ( srcModel ) ;
1657+ var classModel = model . Classes [ 0 ] ;
1658+ Assert . AreEqual ( 1 , model . Classes . Count ) ;
1659+ Assert . AreEqual ( "Test" , classModel . Name ) ;
1660+ Assert . AreEqual ( FlagType . Class , classModel . Flags & FlagType . Class ) ;
1661+ Assert . AreEqual ( 2 , classModel . LineFrom ) ;
1662+ Assert . AreEqual ( 6 , classModel . LineTo ) ;
1663+ Assert . AreEqual ( 2 , classModel . Members . Count ) ;
1664+
1665+ var memberModel = classModel . Members [ 0 ] ;
1666+ Assert . AreEqual ( "var_1244" , memberModel . Name ) ;
1667+ Assert . AreEqual ( "Int" , memberModel . Type ) ;
1668+ var flags = FlagType . Variable | FlagType . Static ;
1669+ Assert . AreEqual ( flags , memberModel . Flags & flags ) ;
1670+ Assert . AreEqual ( Visibility . Public , memberModel . Access & Visibility . Public ) ;
1671+ Assert . AreEqual ( 4 , memberModel . LineFrom ) ;
1672+ Assert . AreEqual ( 4 , memberModel . LineTo ) ;
1673+
1674+ memberModel = classModel . Members [ 1 ] ;
1675+ Assert . AreEqual ( "ERR_LOGINFAILED" , memberModel . Name ) ;
1676+ Assert . AreEqual ( "Int" , memberModel . Type ) ;
1677+ flags = FlagType . Variable | FlagType . Static ;
1678+ Assert . AreEqual ( flags , memberModel . Flags & flags ) ;
1679+ Assert . AreEqual ( Visibility . Public , memberModel . Access & Visibility . Public ) ;
1680+ Assert . AreEqual ( 5 , memberModel . LineFrom ) ;
1681+ Assert . AreEqual ( 5 , memberModel . LineTo ) ;
1682+ }
1683+ }
1684+
15941685 [ Test ]
15951686 public void ParseFile_IdentifiersWithUnicodeChars ( )
15961687 {
0 commit comments