diff --git a/sqlparser/lib/src/engine/autocomplete/suggestion.dart b/sqlparser/lib/src/engine/autocomplete/suggestion.dart index 8b92dc90..69bd69fd 100644 --- a/sqlparser/lib/src/engine/autocomplete/suggestion.dart +++ b/sqlparser/lib/src/engine/autocomplete/suggestion.dart @@ -27,4 +27,9 @@ class Suggestion { final int relevance; Suggestion(this.code, this.relevance); + + @override + String toString() { + return 'Suggestion($code, $relevance)'; + } } diff --git a/sqlparser/lib/src/reader/parser/parser.dart b/sqlparser/lib/src/reader/parser/parser.dart index 85ff66a2..9bf42be6 100644 --- a/sqlparser/lib/src/reader/parser/parser.dart +++ b/sqlparser/lib/src/reader/parser/parser.dart @@ -114,6 +114,7 @@ abstract class ParserBase { } bool _check(TokenType type) { + if (_reportAutoComplete) _suggestHintForToken(type); if (_isAtEnd) return false; return _peek.type == type; } diff --git a/sqlparser/test/engine/autocomplete/static_test.dart b/sqlparser/test/engine/autocomplete/static_test.dart index 9c347f43..634511de 100644 --- a/sqlparser/test/engine/autocomplete/static_test.dart +++ b/sqlparser/test/engine/autocomplete/static_test.dart @@ -3,14 +3,24 @@ import 'package:sqlparser/src/engine/autocomplete/engine.dart'; import 'package:test/test.dart'; void main() { - test('suggests a CREATE TABLE statements for an empty file', () { + test('suggests a CREATE an empty file', () { final engine = SqlEngine(useMoorExtensions: true); final parseResult = engine.parseMoorFile(''); final suggestions = parseResult.autoCompleteEngine.suggestCompletions(0); expect(suggestions.anchor, 0); - expect(suggestions.suggestions, contains(hasCode('CREATE TABLE'))); + expect(suggestions.suggestions, contains(hasCode('CREATE'))); + }); + + test('suggests CREATE TABLE completion after CREATE', () async { + final engine = SqlEngine(useMoorExtensions: true); + final parseResult = engine.parseMoorFile('CREATE '); + + final suggestions = parseResult.autoCompleteEngine.suggestCompletions(7); + + expect(suggestions.anchor, 7); + expect(suggestions.suggestions, contains(hasCode('TABLE'))); }); test('suggests completions for started expressions', () { @@ -20,7 +30,7 @@ void main() { final suggestions = parseResult.autoCompleteEngine.suggestCompletions(0); expect(suggestions.anchor, 0); - expect(suggestions.suggestions, contains(hasCode('CREATE TABLE'))); + expect(suggestions.suggestions, contains(hasCode('CREATE'))); }); }