diff --git a/server/src/src/ASTypeDefParser/Parser.cpp b/server/src/src/ASTypeDefParser/Parser.cpp index 3595e75..b0adf0c 100644 --- a/server/src/src/ASTypeDefParser/Parser.cpp +++ b/server/src/src/ASTypeDefParser/Parser.cpp @@ -68,7 +68,11 @@ namespace ASTypeDefParser { std::vector> behaviours; if (end == '{') { index++; - while (index <= data.size()) { + while (index < data.size()) { + if (std::string(" \r\n\t").find(data.at(index)) != std::string::npos){ + index++; + continue; + } if (data.at(index) == '}') { break; } diff --git a/server/src/tests/AsTypeDefTests/TypeDefTests.cpp b/server/src/tests/AsTypeDefTests/TypeDefTests.cpp index 19ddfc2..77665c9 100644 --- a/server/src/tests/AsTypeDefTests/TypeDefTests.cpp +++ b/server/src/tests/AsTypeDefTests/TypeDefTests.cpp @@ -414,5 +414,28 @@ type fooClass { asEBehaviours b; REQUIRE_EQ(std::string(type->GetBehaviourByIndex(0, &b)->GetDeclaration()), "fooClass@ $list(int&in) { repeat int }"); + engine->Release(); +} + +TEST_CASE("Register Type and func") { + asIScriptEngine* engine = asCreateScriptEngine(); + engine->SetMessageCallback(asFUNCTION(MessageCallback), 0, asCALL_CDECL); + + ASTypeDefParser::TypeDefResult res; + ASTypeDefParser::Parser::ParseAndRegister(res, R"( +type fooClass { + void Foo(); +} + +func fooClass@ CreateFoo(); + +)"); + res.RegisterTypes(engine); + res.RegisterImplementation(engine); + auto type = engine->GetTypeInfoByName("fooClass"); + REQUIRE(type != nullptr); + auto func = engine->GetGlobalFunctionByDecl("fooClass@ CreateFoo()"); + REQUIRE(func != nullptr); + engine->Release(); } \ No newline at end of file