In generated parsers, export language as a function
This commit is contained in:
parent
909261d742
commit
0d6d09cbd9
7 changed files with 24 additions and 18 deletions
|
|
@ -163,7 +163,9 @@ struct TSLanguage {
|
|||
.lex_fn = ts_lex, \
|
||||
}; \
|
||||
\
|
||||
const TSLanguage *language_name = &language;
|
||||
const TSLanguage * language_name() { \
|
||||
return &language; \
|
||||
}
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@
|
|||
#include "runtime/helpers/spy_reader.h"
|
||||
#include "runtime/tree.h"
|
||||
|
||||
extern "C" const TSLanguage * ts_language_json;
|
||||
extern "C" const TSLanguage * ts_language_json();
|
||||
|
||||
START_TEST
|
||||
|
||||
|
|
@ -11,7 +11,7 @@ describe("incremental parsing", [&]() {
|
|||
|
||||
before_each([&]() {
|
||||
doc = ts_document_make();
|
||||
ts_document_set_language(doc, ts_language_json);
|
||||
ts_document_set_language(doc, ts_language_json());
|
||||
});
|
||||
|
||||
after_each([&]() {
|
||||
|
|
|
|||
|
|
@ -37,4 +37,6 @@ static TSLanguage language = {
|
|||
.hidden_symbol_flags = hidden_symbols,
|
||||
};
|
||||
|
||||
TSLanguage *dummy_language = &language;
|
||||
const TSLanguage * dummy_language() {
|
||||
return &language;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -14,7 +14,7 @@ enum {
|
|||
dummy_sym3 = 4,
|
||||
};
|
||||
|
||||
extern TSLanguage *dummy_language;
|
||||
const TSLanguage * dummy_language();
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,10 +1,10 @@
|
|||
#include "runtime/runtime_spec_helper.h"
|
||||
#include "runtime/helpers/read_test_entries.h"
|
||||
|
||||
extern "C" TSLanguage *ts_language_javascript;
|
||||
extern "C" TSLanguage *ts_language_json;
|
||||
extern "C" TSLanguage *ts_language_arithmetic;
|
||||
extern "C" TSLanguage *ts_language_golang;
|
||||
extern "C" const TSLanguage *ts_language_javascript();
|
||||
extern "C" const TSLanguage *ts_language_json();
|
||||
extern "C" const TSLanguage *ts_language_arithmetic();
|
||||
extern "C" const TSLanguage *ts_language_golang();
|
||||
|
||||
START_TEST
|
||||
|
||||
|
|
@ -19,7 +19,7 @@ describe("Languages", [&]() {
|
|||
ts_document_free(doc);
|
||||
});
|
||||
|
||||
auto run_tests_for_language = [&](string language_name, TSLanguage *language) {
|
||||
auto run_tests_for_language = [&](string language_name, const TSLanguage *language) {
|
||||
describe(language_name.c_str(), [&]() {
|
||||
before_each([&]() {
|
||||
ts_document_set_language(doc, language);
|
||||
|
|
@ -36,10 +36,10 @@ describe("Languages", [&]() {
|
|||
});
|
||||
};
|
||||
|
||||
run_tests_for_language("json", ts_language_json);
|
||||
run_tests_for_language("arithmetic", ts_language_arithmetic);
|
||||
run_tests_for_language("javascript", ts_language_javascript);
|
||||
run_tests_for_language("golang", ts_language_golang);
|
||||
run_tests_for_language("json", ts_language_json());
|
||||
run_tests_for_language("arithmetic", ts_language_arithmetic());
|
||||
run_tests_for_language("javascript", ts_language_javascript());
|
||||
run_tests_for_language("golang", ts_language_golang());
|
||||
});
|
||||
|
||||
END_TEST
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
#include "runtime/runtime_spec_helper.h"
|
||||
|
||||
extern "C" TSLanguage * ts_language_json;
|
||||
extern "C" TSLanguage * ts_language_json();
|
||||
|
||||
START_TEST
|
||||
|
||||
|
|
@ -10,7 +10,7 @@ describe("Node", []() {
|
|||
|
||||
before_each([&]() {
|
||||
document = ts_document_make();
|
||||
ts_document_set_language(document, ts_language_json);
|
||||
ts_document_set_language(document, ts_language_json());
|
||||
|
||||
ts_document_set_input_string(document, " [12, 5, 345]");
|
||||
root = ts_document_root_node(document);
|
||||
|
|
|
|||
|
|
@ -20,10 +20,12 @@ START_TEST
|
|||
describe("LR Parsers", [&]() {
|
||||
TSParser parser;
|
||||
SpyReader *reader;
|
||||
TSLanguage language;
|
||||
|
||||
before_each([&]() {
|
||||
dummy_language->lex_fn = fake_lex;
|
||||
parser = ts_parser_make(dummy_language);
|
||||
language = *dummy_language();
|
||||
language.lex_fn = fake_lex;
|
||||
parser = ts_parser_make(&language);
|
||||
|
||||
reader = new SpyReader("some structured text", 5);
|
||||
});
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue