|
@@ -60,7 +60,9 @@ ValueExpression_EDIT
|
|
|
}
|
|
}
|
|
|
| '-' ValueExpression_EDIT %prec NEGATION
|
|
| '-' ValueExpression_EDIT %prec NEGATION
|
|
|
{
|
|
{
|
|
|
- applyTypeToSuggestions('NUMBER')
|
|
|
|
|
|
|
+ if (!$2.typeSet) {
|
|
|
|
|
+ applyTypeToSuggestions('NUMBER');
|
|
|
|
|
+ }
|
|
|
$$ = { types: [ 'NUMBER' ] };
|
|
$$ = { types: [ 'NUMBER' ] };
|
|
|
}
|
|
}
|
|
|
| '-' 'PARTIAL_CURSOR' %prec NEGATION
|
|
| '-' 'PARTIAL_CURSOR' %prec NEGATION
|
|
@@ -99,11 +101,14 @@ ValueExpression
|
|
|
|
|
|
|
|
ValueExpression_EDIT
|
|
ValueExpression_EDIT
|
|
|
: 'EXISTS' TableSubQuery_EDIT -> { types: [ 'BOOLEAN' ] }
|
|
: 'EXISTS' TableSubQuery_EDIT -> { types: [ 'BOOLEAN' ] }
|
|
|
- | '(' ValueExpression_EDIT RightParenthesisOrError -> $2
|
|
|
|
|
- | '(' AnyCursor RightParenthesisOrError
|
|
|
|
|
|
|
+ | '(' ValueExpression_EDIT RightParenthesisOrError
|
|
|
|
|
+ {
|
|
|
|
|
+ $$ = $2;
|
|
|
|
|
+ }
|
|
|
|
|
+ | '(' 'CURSOR' RightParenthesisOrError
|
|
|
{
|
|
{
|
|
|
valueExpressionSuggest();
|
|
valueExpressionSuggest();
|
|
|
- $$ = { types: ['T'] };
|
|
|
|
|
|
|
+ $$ = { types: ['T'], typeSet: true };
|
|
|
}
|
|
}
|
|
|
;
|
|
;
|
|
|
|
|
|
|
@@ -121,96 +126,112 @@ ValueExpression_EDIT
|
|
|
{
|
|
{
|
|
|
valueExpressionSuggest($3, $2);
|
|
valueExpressionSuggest($3, $2);
|
|
|
applyTypeToSuggestions($3.types);
|
|
applyTypeToSuggestions($3.types);
|
|
|
- $$ = { types: [ 'BOOLEAN' ] };
|
|
|
|
|
|
|
+ $$ = { types: [ 'BOOLEAN' ], typeSet: true };
|
|
|
}
|
|
}
|
|
|
| 'CURSOR' '<' ValueExpression
|
|
| 'CURSOR' '<' ValueExpression
|
|
|
{
|
|
{
|
|
|
valueExpressionSuggest($3, $2);
|
|
valueExpressionSuggest($3, $2);
|
|
|
applyTypeToSuggestions($3.types);
|
|
applyTypeToSuggestions($3.types);
|
|
|
- $$ = { types: [ 'BOOLEAN' ] };
|
|
|
|
|
|
|
+ $$ = { types: [ 'BOOLEAN' ], typeSet: true };
|
|
|
}
|
|
}
|
|
|
| 'CURSOR' '>' ValueExpression
|
|
| 'CURSOR' '>' ValueExpression
|
|
|
{
|
|
{
|
|
|
valueExpressionSuggest($3, $2);
|
|
valueExpressionSuggest($3, $2);
|
|
|
applyTypeToSuggestions($3.types);
|
|
applyTypeToSuggestions($3.types);
|
|
|
- $$ = { types: [ 'BOOLEAN' ] };
|
|
|
|
|
|
|
+ $$ = { types: [ 'BOOLEAN' ], typeSet: true };
|
|
|
}
|
|
}
|
|
|
| 'CURSOR' 'COMPARISON_OPERATOR' ValueExpression
|
|
| 'CURSOR' 'COMPARISON_OPERATOR' ValueExpression
|
|
|
{
|
|
{
|
|
|
valueExpressionSuggest($3, $2);
|
|
valueExpressionSuggest($3, $2);
|
|
|
applyTypeToSuggestions($3.types);
|
|
applyTypeToSuggestions($3.types);
|
|
|
- $$ = { types: [ 'BOOLEAN' ] };
|
|
|
|
|
|
|
+ $$ = { types: [ 'BOOLEAN' ], typeSet: true };
|
|
|
}
|
|
}
|
|
|
| ValueExpression_EDIT '=' ValueExpression
|
|
| ValueExpression_EDIT '=' ValueExpression
|
|
|
{
|
|
{
|
|
|
- applyTypeToSuggestions($3.types);
|
|
|
|
|
- addColRefIfExists($3);
|
|
|
|
|
|
|
+ if (!$1.typeSet) {
|
|
|
|
|
+ applyTypeToSuggestions($3.types);
|
|
|
|
|
+ addColRefIfExists($3);
|
|
|
|
|
+ }
|
|
|
$$ = { types: [ 'BOOLEAN' ] }
|
|
$$ = { types: [ 'BOOLEAN' ] }
|
|
|
}
|
|
}
|
|
|
| ValueExpression_EDIT '<' ValueExpression
|
|
| ValueExpression_EDIT '<' ValueExpression
|
|
|
{
|
|
{
|
|
|
- applyTypeToSuggestions($3.types);
|
|
|
|
|
- addColRefIfExists($3);
|
|
|
|
|
|
|
+ if (!$1.typeSet) {
|
|
|
|
|
+ applyTypeToSuggestions($3.types);
|
|
|
|
|
+ addColRefIfExists($3);
|
|
|
|
|
+ }
|
|
|
$$ = { types: [ 'BOOLEAN' ] }
|
|
$$ = { types: [ 'BOOLEAN' ] }
|
|
|
}
|
|
}
|
|
|
| ValueExpression_EDIT '>' ValueExpression
|
|
| ValueExpression_EDIT '>' ValueExpression
|
|
|
{
|
|
{
|
|
|
- applyTypeToSuggestions($3.types);
|
|
|
|
|
- addColRefIfExists($3);
|
|
|
|
|
|
|
+ if (!$1.typeSet) {
|
|
|
|
|
+ applyTypeToSuggestions($3.types);
|
|
|
|
|
+ addColRefIfExists($3);
|
|
|
|
|
+ }
|
|
|
$$ = { types: [ 'BOOLEAN' ] }
|
|
$$ = { types: [ 'BOOLEAN' ] }
|
|
|
}
|
|
}
|
|
|
| ValueExpression_EDIT 'COMPARISON_OPERATOR' ValueExpression
|
|
| ValueExpression_EDIT 'COMPARISON_OPERATOR' ValueExpression
|
|
|
{
|
|
{
|
|
|
- applyTypeToSuggestions($3.types);
|
|
|
|
|
- addColRefIfExists($3);
|
|
|
|
|
|
|
+ if (!$1.typeSet) {
|
|
|
|
|
+ applyTypeToSuggestions($3.types);
|
|
|
|
|
+ addColRefIfExists($3);
|
|
|
|
|
+ }
|
|
|
$$ = { types: [ 'BOOLEAN' ] }
|
|
$$ = { types: [ 'BOOLEAN' ] }
|
|
|
}
|
|
}
|
|
|
| ValueExpression '=' PartialBacktickedOrAnyCursor
|
|
| ValueExpression '=' PartialBacktickedOrAnyCursor
|
|
|
{
|
|
{
|
|
|
valueExpressionSuggest($1, $2);
|
|
valueExpressionSuggest($1, $2);
|
|
|
applyTypeToSuggestions($1.types);
|
|
applyTypeToSuggestions($1.types);
|
|
|
- $$ = { types: [ 'BOOLEAN' ] };
|
|
|
|
|
|
|
+ $$ = { types: [ 'BOOLEAN' ], typeSet: true };
|
|
|
}
|
|
}
|
|
|
| ValueExpression '<' PartialBacktickedOrAnyCursor
|
|
| ValueExpression '<' PartialBacktickedOrAnyCursor
|
|
|
{
|
|
{
|
|
|
valueExpressionSuggest($1, $2);
|
|
valueExpressionSuggest($1, $2);
|
|
|
applyTypeToSuggestions($1.types);
|
|
applyTypeToSuggestions($1.types);
|
|
|
- $$ = { types: [ 'BOOLEAN' ] };
|
|
|
|
|
|
|
+ $$ = { types: [ 'BOOLEAN' ] , typeSet: true };
|
|
|
}
|
|
}
|
|
|
| ValueExpression '>' PartialBacktickedOrAnyCursor
|
|
| ValueExpression '>' PartialBacktickedOrAnyCursor
|
|
|
{
|
|
{
|
|
|
valueExpressionSuggest($1, $2);
|
|
valueExpressionSuggest($1, $2);
|
|
|
applyTypeToSuggestions($1.types);
|
|
applyTypeToSuggestions($1.types);
|
|
|
- $$ = { types: [ 'BOOLEAN' ] };
|
|
|
|
|
|
|
+ $$ = { types: [ 'BOOLEAN' ], typeSet: true };
|
|
|
}
|
|
}
|
|
|
| ValueExpression 'COMPARISON_OPERATOR' PartialBacktickedOrAnyCursor
|
|
| ValueExpression 'COMPARISON_OPERATOR' PartialBacktickedOrAnyCursor
|
|
|
{
|
|
{
|
|
|
valueExpressionSuggest($1, $2);
|
|
valueExpressionSuggest($1, $2);
|
|
|
applyTypeToSuggestions($1.types);
|
|
applyTypeToSuggestions($1.types);
|
|
|
- $$ = { types: [ 'BOOLEAN' ] };
|
|
|
|
|
|
|
+ $$ = { types: [ 'BOOLEAN' ], typeSet: true };
|
|
|
}
|
|
}
|
|
|
| ValueExpression '=' ValueExpression_EDIT
|
|
| ValueExpression '=' ValueExpression_EDIT
|
|
|
{
|
|
{
|
|
|
- applyTypeToSuggestions($1.types);
|
|
|
|
|
- addColRefIfExists($1);
|
|
|
|
|
|
|
+ if (!$3.typeSet) {
|
|
|
|
|
+ applyTypeToSuggestions($1.types);
|
|
|
|
|
+ addColRefIfExists($1);
|
|
|
|
|
+ }
|
|
|
$$ = { types: [ 'BOOLEAN' ] }
|
|
$$ = { types: [ 'BOOLEAN' ] }
|
|
|
}
|
|
}
|
|
|
| ValueExpression '<' ValueExpression_EDIT
|
|
| ValueExpression '<' ValueExpression_EDIT
|
|
|
{
|
|
{
|
|
|
- applyTypeToSuggestions($1.types);
|
|
|
|
|
- addColRefIfExists($1);
|
|
|
|
|
|
|
+ if (!$3.typeSet) {
|
|
|
|
|
+ applyTypeToSuggestions($1.types);
|
|
|
|
|
+ addColRefIfExists($1);
|
|
|
|
|
+ }
|
|
|
$$ = { types: [ 'BOOLEAN' ] }
|
|
$$ = { types: [ 'BOOLEAN' ] }
|
|
|
}
|
|
}
|
|
|
| ValueExpression '>' ValueExpression_EDIT
|
|
| ValueExpression '>' ValueExpression_EDIT
|
|
|
{
|
|
{
|
|
|
- applyTypeToSuggestions($1.types);
|
|
|
|
|
- addColRefIfExists($1);
|
|
|
|
|
|
|
+ if (!$3.typeSet) {
|
|
|
|
|
+ applyTypeToSuggestions($1.types);
|
|
|
|
|
+ addColRefIfExists($1);
|
|
|
|
|
+ }
|
|
|
$$ = { types: [ 'BOOLEAN' ] }
|
|
$$ = { types: [ 'BOOLEAN' ] }
|
|
|
}
|
|
}
|
|
|
| ValueExpression 'COMPARISON_OPERATOR' ValueExpression_EDIT
|
|
| ValueExpression 'COMPARISON_OPERATOR' ValueExpression_EDIT
|
|
|
{
|
|
{
|
|
|
- applyTypeToSuggestions($1.types);
|
|
|
|
|
- addColRefIfExists($1);
|
|
|
|
|
|
|
+ if (!$3.typeSet) {
|
|
|
|
|
+ applyTypeToSuggestions($1.types);
|
|
|
|
|
+ addColRefIfExists($1);
|
|
|
|
|
+ }
|
|
|
$$ = { types: [ 'BOOLEAN' ] }
|
|
$$ = { types: [ 'BOOLEAN' ] }
|
|
|
}
|
|
}
|
|
|
;
|
|
;
|
|
@@ -235,7 +256,7 @@ ValueExpression_EDIT
|
|
|
if ($4.cursorAtStart) {
|
|
if ($4.cursorAtStart) {
|
|
|
suggestKeywords(['SELECT']);
|
|
suggestKeywords(['SELECT']);
|
|
|
}
|
|
}
|
|
|
- $$ = { types: [ 'BOOLEAN' ] };
|
|
|
|
|
|
|
+ $$ = { types: [ 'BOOLEAN' ], typeSet: true };
|
|
|
}
|
|
}
|
|
|
| ValueExpression 'IN' ValueExpressionInSecondPart_EDIT
|
|
| ValueExpression 'IN' ValueExpressionInSecondPart_EDIT
|
|
|
{
|
|
{
|
|
@@ -246,7 +267,7 @@ ValueExpression_EDIT
|
|
|
if ($3.cursorAtStart) {
|
|
if ($3.cursorAtStart) {
|
|
|
suggestKeywords(['SELECT']);
|
|
suggestKeywords(['SELECT']);
|
|
|
}
|
|
}
|
|
|
- $$ = { types: [ 'BOOLEAN' ] };
|
|
|
|
|
|
|
+ $$ = { types: [ 'BOOLEAN' ], typeSet: true };
|
|
|
}
|
|
}
|
|
|
| ValueExpression_EDIT 'NOT' 'IN' '(' ValueExpressionList RightParenthesisOrError -> { types: [ 'BOOLEAN' ] }
|
|
| ValueExpression_EDIT 'NOT' 'IN' '(' ValueExpressionList RightParenthesisOrError -> { types: [ 'BOOLEAN' ] }
|
|
|
| ValueExpression_EDIT 'NOT' 'IN' '(' TableSubQueryInner RightParenthesisOrError -> { types: [ 'BOOLEAN' ] }
|
|
| ValueExpression_EDIT 'NOT' 'IN' '(' TableSubQueryInner RightParenthesisOrError -> { types: [ 'BOOLEAN' ] }
|
|
@@ -270,21 +291,21 @@ ValueExpression
|
|
|
ValueExpression_EDIT
|
|
ValueExpression_EDIT
|
|
|
: ValueExpression_EDIT 'NOT' 'BETWEEN' ValueExpression 'BETWEEN_AND' ValueExpression
|
|
: ValueExpression_EDIT 'NOT' 'BETWEEN' ValueExpression 'BETWEEN_AND' ValueExpression
|
|
|
{
|
|
{
|
|
|
- if ($4.types[0] === $6.types[0]) {
|
|
|
|
|
|
|
+ if ($4.types[0] === $6.types[0] && !$1.typeSet) {
|
|
|
applyTypeToSuggestions($4.types);
|
|
applyTypeToSuggestions($4.types);
|
|
|
}
|
|
}
|
|
|
$$ = { types: [ 'BOOLEAN' ] };
|
|
$$ = { types: [ 'BOOLEAN' ] };
|
|
|
}
|
|
}
|
|
|
| ValueExpression 'NOT' 'BETWEEN' ValueExpression_EDIT 'BETWEEN_AND' ValueExpression
|
|
| ValueExpression 'NOT' 'BETWEEN' ValueExpression_EDIT 'BETWEEN_AND' ValueExpression
|
|
|
{
|
|
{
|
|
|
- if ($1.types[0] === $6.types[0]) {
|
|
|
|
|
|
|
+ if ($1.types[0] === $6.types[0] && !$4.typeSet) {
|
|
|
applyTypeToSuggestions($1.types);
|
|
applyTypeToSuggestions($1.types);
|
|
|
}
|
|
}
|
|
|
$$ = { types: [ 'BOOLEAN' ] };
|
|
$$ = { types: [ 'BOOLEAN' ] };
|
|
|
}
|
|
}
|
|
|
| ValueExpression 'NOT' 'BETWEEN' ValueExpression 'BETWEEN_AND' ValueExpression_EDIT
|
|
| ValueExpression 'NOT' 'BETWEEN' ValueExpression 'BETWEEN_AND' ValueExpression_EDIT
|
|
|
{
|
|
{
|
|
|
- if ($1.types[0] === $4.types[0]) {
|
|
|
|
|
|
|
+ if ($1.types[0] === $4.types[0] && !$6.typeSet) {
|
|
|
applyTypeToSuggestions($1.types);
|
|
applyTypeToSuggestions($1.types);
|
|
|
}
|
|
}
|
|
|
$$ = { types: [ 'BOOLEAN' ] };
|
|
$$ = { types: [ 'BOOLEAN' ] };
|
|
@@ -292,7 +313,7 @@ ValueExpression_EDIT
|
|
|
| ValueExpression 'NOT' 'BETWEEN' ValueExpression 'BETWEEN_AND' 'CURSOR'
|
|
| ValueExpression 'NOT' 'BETWEEN' ValueExpression 'BETWEEN_AND' 'CURSOR'
|
|
|
{
|
|
{
|
|
|
valueExpressionSuggest($1, $5);
|
|
valueExpressionSuggest($1, $5);
|
|
|
- $$ = { types: [ 'BOOLEAN' ] };
|
|
|
|
|
|
|
+ $$ = { types: [ 'BOOLEAN' ], typeSet: true };
|
|
|
}
|
|
}
|
|
|
| ValueExpression 'NOT' 'BETWEEN' ValueExpression 'CURSOR'
|
|
| ValueExpression 'NOT' 'BETWEEN' ValueExpression 'CURSOR'
|
|
|
{
|
|
{
|
|
@@ -302,25 +323,25 @@ ValueExpression_EDIT
|
|
|
| ValueExpression 'NOT' 'BETWEEN' 'CURSOR'
|
|
| ValueExpression 'NOT' 'BETWEEN' 'CURSOR'
|
|
|
{
|
|
{
|
|
|
valueExpressionSuggest($1, $2 + ' ' + $3);
|
|
valueExpressionSuggest($1, $2 + ' ' + $3);
|
|
|
- $$ = { types: [ 'BOOLEAN' ] };
|
|
|
|
|
|
|
+ $$ = { types: [ 'BOOLEAN' ], typeSet: true };
|
|
|
}
|
|
}
|
|
|
| ValueExpression_EDIT 'BETWEEN' ValueExpression 'BETWEEN_AND' ValueExpression
|
|
| ValueExpression_EDIT 'BETWEEN' ValueExpression 'BETWEEN_AND' ValueExpression
|
|
|
{
|
|
{
|
|
|
- if ($1.types[0] === $3.types[0]) {
|
|
|
|
|
|
|
+ if ($1.types[0] === $3.types[0] && !$1.typeSet) {
|
|
|
applyTypeToSuggestions($1.types)
|
|
applyTypeToSuggestions($1.types)
|
|
|
}
|
|
}
|
|
|
$$ = { types: [ 'BOOLEAN' ] };
|
|
$$ = { types: [ 'BOOLEAN' ] };
|
|
|
}
|
|
}
|
|
|
| ValueExpression 'BETWEEN' ValueExpression_EDIT 'BETWEEN_AND' ValueExpression
|
|
| ValueExpression 'BETWEEN' ValueExpression_EDIT 'BETWEEN_AND' ValueExpression
|
|
|
{
|
|
{
|
|
|
- if ($1.types[0] === $3.types[0]) {
|
|
|
|
|
|
|
+ if ($1.types[0] === $3.types[0] && !$3.typeSet) {
|
|
|
applyTypeToSuggestions($1.types)
|
|
applyTypeToSuggestions($1.types)
|
|
|
}
|
|
}
|
|
|
$$ = { types: [ 'BOOLEAN' ] };
|
|
$$ = { types: [ 'BOOLEAN' ] };
|
|
|
}
|
|
}
|
|
|
| ValueExpression 'BETWEEN' ValueExpression 'BETWEEN_AND' ValueExpression_EDIT
|
|
| ValueExpression 'BETWEEN' ValueExpression 'BETWEEN_AND' ValueExpression_EDIT
|
|
|
{
|
|
{
|
|
|
- if ($1.types[0] === $3.types[0]) {
|
|
|
|
|
|
|
+ if ($1.types[0] === $3.types[0] && !$5.typeSet) {
|
|
|
applyTypeToSuggestions($1.types)
|
|
applyTypeToSuggestions($1.types)
|
|
|
}
|
|
}
|
|
|
$$ = { types: [ 'BOOLEAN' ] };
|
|
$$ = { types: [ 'BOOLEAN' ] };
|
|
@@ -329,7 +350,7 @@ ValueExpression_EDIT
|
|
|
{
|
|
{
|
|
|
valueExpressionSuggest($1, $4);
|
|
valueExpressionSuggest($1, $4);
|
|
|
applyTypeToSuggestions($1.types);
|
|
applyTypeToSuggestions($1.types);
|
|
|
- $$ = { types: [ 'BOOLEAN' ] };
|
|
|
|
|
|
|
+ $$ = { types: [ 'BOOLEAN' ], typeSet: true };
|
|
|
}
|
|
}
|
|
|
| ValueExpression 'BETWEEN' ValueExpression 'CURSOR'
|
|
| ValueExpression 'BETWEEN' ValueExpression 'CURSOR'
|
|
|
{
|
|
{
|
|
@@ -340,7 +361,7 @@ ValueExpression_EDIT
|
|
|
{
|
|
{
|
|
|
valueExpressionSuggest($1, $2);
|
|
valueExpressionSuggest($1, $2);
|
|
|
applyTypeToSuggestions($1.types);
|
|
applyTypeToSuggestions($1.types);
|
|
|
- $$ = { types: [ 'BOOLEAN' ] };
|
|
|
|
|
|
|
+ $$ = { types: [ 'BOOLEAN' ], typeSet: true };
|
|
|
}
|
|
}
|
|
|
;
|
|
;
|
|
|
|
|
|
|
@@ -365,7 +386,7 @@ ValueExpression_EDIT
|
|
|
: 'CURSOR' 'OR' ValueExpression
|
|
: 'CURSOR' 'OR' ValueExpression
|
|
|
{
|
|
{
|
|
|
valueExpressionSuggest(undefined, $2);
|
|
valueExpressionSuggest(undefined, $2);
|
|
|
- $$ = { types: [ 'BOOLEAN' ] };
|
|
|
|
|
|
|
+ $$ = { types: [ 'BOOLEAN' ], typeSet: true };
|
|
|
}
|
|
}
|
|
|
| ValueExpression_EDIT 'OR' ValueExpression
|
|
| ValueExpression_EDIT 'OR' ValueExpression
|
|
|
{
|
|
{
|
|
@@ -375,7 +396,7 @@ ValueExpression_EDIT
|
|
|
| ValueExpression 'OR' PartialBacktickedOrAnyCursor
|
|
| ValueExpression 'OR' PartialBacktickedOrAnyCursor
|
|
|
{
|
|
{
|
|
|
valueExpressionSuggest(undefined, $2);
|
|
valueExpressionSuggest(undefined, $2);
|
|
|
- $$ = { types: [ 'BOOLEAN' ] };
|
|
|
|
|
|
|
+ $$ = { types: [ 'BOOLEAN' ], typeSet: true };
|
|
|
}
|
|
}
|
|
|
| ValueExpression 'OR' ValueExpression_EDIT
|
|
| ValueExpression 'OR' ValueExpression_EDIT
|
|
|
{
|
|
{
|
|
@@ -385,7 +406,7 @@ ValueExpression_EDIT
|
|
|
| 'CURSOR' 'AND' ValueExpression
|
|
| 'CURSOR' 'AND' ValueExpression
|
|
|
{
|
|
{
|
|
|
valueExpressionSuggest(undefined, $2);
|
|
valueExpressionSuggest(undefined, $2);
|
|
|
- $$ = { types: [ 'BOOLEAN' ] };
|
|
|
|
|
|
|
+ $$ = { types: [ 'BOOLEAN' ], typeSet: true };
|
|
|
}
|
|
}
|
|
|
| ValueExpression_EDIT 'AND' ValueExpression
|
|
| ValueExpression_EDIT 'AND' ValueExpression
|
|
|
{
|
|
{
|
|
@@ -395,7 +416,7 @@ ValueExpression_EDIT
|
|
|
| ValueExpression 'AND' PartialBacktickedOrAnyCursor
|
|
| ValueExpression 'AND' PartialBacktickedOrAnyCursor
|
|
|
{
|
|
{
|
|
|
valueExpressionSuggest(undefined, $2);
|
|
valueExpressionSuggest(undefined, $2);
|
|
|
- $$ = { types: [ 'BOOLEAN' ] };
|
|
|
|
|
|
|
+ $$ = { types: [ 'BOOLEAN' ], typeSet: true };
|
|
|
}
|
|
}
|
|
|
| ValueExpression 'AND' ValueExpression_EDIT
|
|
| ValueExpression 'AND' ValueExpression_EDIT
|
|
|
{
|
|
{
|
|
@@ -432,66 +453,78 @@ ValueExpression_EDIT
|
|
|
{
|
|
{
|
|
|
valueExpressionSuggest(undefined, $2);
|
|
valueExpressionSuggest(undefined, $2);
|
|
|
applyTypeToSuggestions([ 'NUMBER' ]);
|
|
applyTypeToSuggestions([ 'NUMBER' ]);
|
|
|
- $$ = { types: [ 'NUMBER' ] };
|
|
|
|
|
|
|
+ $$ = { types: [ 'NUMBER' ], typeSet: true };
|
|
|
}
|
|
}
|
|
|
| 'CURSOR' 'ARITHMETIC_OPERATOR' ValueExpression
|
|
| 'CURSOR' 'ARITHMETIC_OPERATOR' ValueExpression
|
|
|
{
|
|
{
|
|
|
valueExpressionSuggest(undefined, $2);
|
|
valueExpressionSuggest(undefined, $2);
|
|
|
applyTypeToSuggestions([ 'NUMBER' ]);
|
|
applyTypeToSuggestions([ 'NUMBER' ]);
|
|
|
- $$ = { types: [ 'NUMBER' ] };
|
|
|
|
|
|
|
+ $$ = { types: [ 'NUMBER' ], typeSet: true };
|
|
|
}
|
|
}
|
|
|
| ValueExpression_EDIT '-' ValueExpression
|
|
| ValueExpression_EDIT '-' ValueExpression
|
|
|
{
|
|
{
|
|
|
- applyTypeToSuggestions(['NUMBER']);
|
|
|
|
|
- addColRefIfExists($3);
|
|
|
|
|
|
|
+ if (!$1.typeSet) {
|
|
|
|
|
+ applyTypeToSuggestions(['NUMBER']);
|
|
|
|
|
+ addColRefIfExists($3);
|
|
|
|
|
+ }
|
|
|
$$ = { types: [ 'NUMBER' ] }
|
|
$$ = { types: [ 'NUMBER' ] }
|
|
|
}
|
|
}
|
|
|
| ValueExpression_EDIT '*' ValueExpression
|
|
| ValueExpression_EDIT '*' ValueExpression
|
|
|
{
|
|
{
|
|
|
- applyTypeToSuggestions(['NUMBER']);
|
|
|
|
|
- addColRefIfExists($3);
|
|
|
|
|
|
|
+ if (!$1.typeSet) {
|
|
|
|
|
+ applyTypeToSuggestions(['NUMBER']);
|
|
|
|
|
+ addColRefIfExists($3);
|
|
|
|
|
+ }
|
|
|
$$ = { types: [ 'NUMBER' ] }
|
|
$$ = { types: [ 'NUMBER' ] }
|
|
|
}
|
|
}
|
|
|
| ValueExpression_EDIT 'ARITHMETIC_OPERATOR' ValueExpression
|
|
| ValueExpression_EDIT 'ARITHMETIC_OPERATOR' ValueExpression
|
|
|
{
|
|
{
|
|
|
- applyTypeToSuggestions(['NUMBER']);
|
|
|
|
|
- addColRefIfExists($3);
|
|
|
|
|
|
|
+ if (!$1.typeSet) {
|
|
|
|
|
+ applyTypeToSuggestions(['NUMBER']);
|
|
|
|
|
+ addColRefIfExists($3);
|
|
|
|
|
+ }
|
|
|
$$ = { types: [ 'NUMBER' ] }
|
|
$$ = { types: [ 'NUMBER' ] }
|
|
|
}
|
|
}
|
|
|
| ValueExpression '-' PartialBacktickedOrAnyCursor
|
|
| ValueExpression '-' PartialBacktickedOrAnyCursor
|
|
|
{
|
|
{
|
|
|
valueExpressionSuggest(undefined, $2);
|
|
valueExpressionSuggest(undefined, $2);
|
|
|
applyTypeToSuggestions(['NUMBER']);
|
|
applyTypeToSuggestions(['NUMBER']);
|
|
|
- $$ = { types: [ 'NUMBER' ] };
|
|
|
|
|
|
|
+ $$ = { types: [ 'NUMBER' ], typeSet: true };
|
|
|
}
|
|
}
|
|
|
| ValueExpression '*' PartialBacktickedOrAnyCursor
|
|
| ValueExpression '*' PartialBacktickedOrAnyCursor
|
|
|
{
|
|
{
|
|
|
valueExpressionSuggest(undefined, $2);
|
|
valueExpressionSuggest(undefined, $2);
|
|
|
applyTypeToSuggestions(['NUMBER']);
|
|
applyTypeToSuggestions(['NUMBER']);
|
|
|
- $$ = { types: [ 'NUMBER' ] };
|
|
|
|
|
|
|
+ $$ = { types: [ 'NUMBER' ], typeSet: true };
|
|
|
}
|
|
}
|
|
|
| ValueExpression 'ARITHMETIC_OPERATOR' PartialBacktickedOrAnyCursor
|
|
| ValueExpression 'ARITHMETIC_OPERATOR' PartialBacktickedOrAnyCursor
|
|
|
{
|
|
{
|
|
|
valueExpressionSuggest(undefined, $2);
|
|
valueExpressionSuggest(undefined, $2);
|
|
|
applyTypeToSuggestions(['NUMBER']);
|
|
applyTypeToSuggestions(['NUMBER']);
|
|
|
- $$ = { types: [ 'NUMBER' ] };
|
|
|
|
|
|
|
+ $$ = { types: [ 'NUMBER' ], typeSet: true };
|
|
|
}
|
|
}
|
|
|
| ValueExpression '-' ValueExpression_EDIT
|
|
| ValueExpression '-' ValueExpression_EDIT
|
|
|
{
|
|
{
|
|
|
- applyTypeToSuggestions(['NUMBER']);
|
|
|
|
|
- addColRefIfExists($1);
|
|
|
|
|
|
|
+ if (!$3.typeSet) {
|
|
|
|
|
+ applyTypeToSuggestions(['NUMBER']);
|
|
|
|
|
+ addColRefIfExists($1);
|
|
|
|
|
+ }
|
|
|
$$ = { types: [ 'NUMBER' ] };
|
|
$$ = { types: [ 'NUMBER' ] };
|
|
|
}
|
|
}
|
|
|
| ValueExpression '*' ValueExpression_EDIT
|
|
| ValueExpression '*' ValueExpression_EDIT
|
|
|
{
|
|
{
|
|
|
- applyTypeToSuggestions(['NUMBER']);
|
|
|
|
|
- addColRefIfExists($1);
|
|
|
|
|
|
|
+ if (!$3.typeSet) {
|
|
|
|
|
+ applyTypeToSuggestions(['NUMBER']);
|
|
|
|
|
+ addColRefIfExists($1);
|
|
|
|
|
+ }
|
|
|
$$ = { types: [ 'NUMBER' ] };
|
|
$$ = { types: [ 'NUMBER' ] };
|
|
|
}
|
|
}
|
|
|
| ValueExpression 'ARITHMETIC_OPERATOR' ValueExpression_EDIT
|
|
| ValueExpression 'ARITHMETIC_OPERATOR' ValueExpression_EDIT
|
|
|
{
|
|
{
|
|
|
- applyTypeToSuggestions(['NUMBER']);
|
|
|
|
|
- addColRefIfExists($1);
|
|
|
|
|
|
|
+ if (!$3.typeSet) {
|
|
|
|
|
+ applyTypeToSuggestions(['NUMBER']);
|
|
|
|
|
+ addColRefIfExists($1);
|
|
|
|
|
+ }
|
|
|
$$ = { types: [ 'NUMBER' ] };
|
|
$$ = { types: [ 'NUMBER' ] };
|
|
|
}
|
|
}
|
|
|
;
|
|
;
|
|
@@ -534,25 +567,25 @@ ValueExpression_EDIT
|
|
|
{
|
|
{
|
|
|
valueExpressionSuggest(undefined, $2 + ' ' + $3);
|
|
valueExpressionSuggest(undefined, $2 + ' ' + $3);
|
|
|
applyTypeToSuggestions([ 'STRING' ]);
|
|
applyTypeToSuggestions([ 'STRING' ]);
|
|
|
- $$ = { types: [ 'BOOLEAN' ] };
|
|
|
|
|
|
|
+ $$ = { types: [ 'BOOLEAN' ], typeSet: true };
|
|
|
}
|
|
}
|
|
|
| 'CURSOR' 'LIKE' ValueExpression
|
|
| 'CURSOR' 'LIKE' ValueExpression
|
|
|
{
|
|
{
|
|
|
valueExpressionSuggest(undefined, $2);
|
|
valueExpressionSuggest(undefined, $2);
|
|
|
applyTypeToSuggestions([ 'STRING' ]);
|
|
applyTypeToSuggestions([ 'STRING' ]);
|
|
|
- $$ = { types: [ 'BOOLEAN' ] };
|
|
|
|
|
|
|
+ $$ = { types: [ 'BOOLEAN' ], typeSet: true };
|
|
|
}
|
|
}
|
|
|
| 'CURSOR' 'RLIKE' ValueExpression
|
|
| 'CURSOR' 'RLIKE' ValueExpression
|
|
|
{
|
|
{
|
|
|
valueExpressionSuggest(undefined, $2);
|
|
valueExpressionSuggest(undefined, $2);
|
|
|
applyTypeToSuggestions([ 'STRING' ]);
|
|
applyTypeToSuggestions([ 'STRING' ]);
|
|
|
- $$ = { types: [ 'BOOLEAN' ] };
|
|
|
|
|
|
|
+ $$ = { types: [ 'BOOLEAN' ], typeSet: true };
|
|
|
}
|
|
}
|
|
|
| 'CURSOR' 'REGEXP' ValueExpression
|
|
| 'CURSOR' 'REGEXP' ValueExpression
|
|
|
{
|
|
{
|
|
|
valueExpressionSuggest(undefined, $2);
|
|
valueExpressionSuggest(undefined, $2);
|
|
|
applyTypeToSuggestions([ 'STRING' ]);
|
|
applyTypeToSuggestions([ 'STRING' ]);
|
|
|
- $$ = { types: [ 'BOOLEAN' ] };
|
|
|
|
|
|
|
+ $$ = { types: [ 'BOOLEAN' ], typeSet: true };
|
|
|
}
|
|
}
|
|
|
| ValueExpression 'LIKE' PartialBacktickedOrCursor
|
|
| ValueExpression 'LIKE' PartialBacktickedOrCursor
|
|
|
{
|
|
{
|
|
@@ -587,13 +620,13 @@ ValueExpression_EDIT
|
|
|
{
|
|
{
|
|
|
valueExpressionSuggest();
|
|
valueExpressionSuggest();
|
|
|
suggestKeywords(['WHEN']);
|
|
suggestKeywords(['WHEN']);
|
|
|
- $$ = { types: [ 'T' ] };
|
|
|
|
|
|
|
+ $$ = { types: [ 'T' ], typeSet: true };
|
|
|
}
|
|
}
|
|
|
| 'CASE' ValueExpression CaseRightPart_EDIT -> $3
|
|
| 'CASE' ValueExpression CaseRightPart_EDIT -> $3
|
|
|
| 'CASE' ValueExpression 'CURSOR' EndOrError
|
|
| 'CASE' ValueExpression 'CURSOR' EndOrError
|
|
|
{
|
|
{
|
|
|
suggestValueExpressionKeywords($2, ['WHEN']);
|
|
suggestValueExpressionKeywords($2, ['WHEN']);
|
|
|
- $$ = { types: [ 'T' ] };
|
|
|
|
|
|
|
+ $$ = { types: [ 'T' ], typeSet: true };
|
|
|
}
|
|
}
|
|
|
| 'CASE' ValueExpression_EDIT CaseRightPart -> $3
|
|
| 'CASE' ValueExpression_EDIT CaseRightPart -> $3
|
|
|
| 'CASE' ValueExpression_EDIT EndOrError -> { types: [ 'T' ] }
|
|
| 'CASE' ValueExpression_EDIT EndOrError -> { types: [ 'T' ] }
|
|
@@ -654,7 +687,7 @@ CaseRightPart_EDIT
|
|
|
| 'ELSE' 'CURSOR' EndOrError
|
|
| 'ELSE' 'CURSOR' EndOrError
|
|
|
{
|
|
{
|
|
|
valueExpressionSuggest();
|
|
valueExpressionSuggest();
|
|
|
- $$ = { types: [ 'T' ] };
|
|
|
|
|
|
|
+ $$ = { types: [ 'T' ], typeSet: true };
|
|
|
}
|
|
}
|
|
|
| 'CURSOR' 'ELSE' ValueExpression EndOrError
|
|
| 'CURSOR' 'ELSE' ValueExpression EndOrError
|
|
|
{
|
|
{
|