Skip to content

Commit d2f69d4

Browse files
[MIN] XQuery, simplifications
1 parent a76ff4f commit d2f69d4

10 files changed

Lines changed: 27 additions & 42 deletions

File tree

basex-core/src/main/java/org/basex/query/expr/AFilter.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -43,9 +43,8 @@ public final void checkUp() throws QueryException {
4343

4444
@Override
4545
public final boolean has(final Flag... flags) {
46-
if(Flag.FCS.oneOf(flags) || root.has(flags)) return true;
47-
final Flag[] flgs = Flag.remove(flags, Flag.FCS, Flag.POS, Flag.CTX);
48-
return flgs.length != 0 && super.has(flgs);
46+
return Flag.FCS.oneOf(flags) || root.has(flags) ||
47+
super.has(Flag.remove(flags, Flag.FCS, Flag.POS, Flag.CTX));
4948
}
5049

5150
@Override

basex-core/src/main/java/org/basex/query/expr/Arr.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -51,8 +51,10 @@ public Expr compile(final CompileContext cc) throws QueryException {
5151

5252
@Override
5353
public boolean has(final Flag... flags) {
54-
for(final Expr expr : exprs) {
55-
if(expr.has(flags)) return true;
54+
if(flags.length != 0) {
55+
for(final Expr expr : exprs) {
56+
if(expr.has(flags)) return true;
57+
}
5658
}
5759
return false;
5860
}

basex-core/src/main/java/org/basex/query/expr/Mapping.java

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -64,12 +64,10 @@ public final Expr compile(final CompileContext cc) throws QueryException {
6464
public final boolean has(final Flag... flags) {
6565
// Context dependency, positional access: only check first expression.
6666
// Examples: . ! abc, position() ! a
67-
if(Flag.FCS.oneOf(flags) ||
68-
Flag.CTX.oneOf(flags) && exprs[0].has(Flag.CTX) ||
69-
Flag.POS.oneOf(flags) && exprs[0].has(Flag.POS)) return true;
70-
// check remaining flags
71-
final Flag[] flgs = Flag.remove(flags, Flag.POS, Flag.CTX);
72-
return flgs.length != 0 && super.has(flgs);
67+
return Flag.FCS.oneOf(flags) ||
68+
Flag.CTX.oneOf(flags) && exprs[0].has(Flag.CTX) ||
69+
Flag.POS.oneOf(flags) && exprs[0].has(Flag.POS) ||
70+
super.has(Flag.remove(flags, Flag.POS, Flag.CTX));
7371
}
7472

7573
@Override

basex-core/src/main/java/org/basex/query/expr/Try.java

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -155,10 +155,7 @@ public boolean ddo() {
155155

156156
@Override
157157
public boolean has(final Flag... flags) {
158-
for(final Catch ctch : catches) {
159-
if(ctch.has(flags)) return true;
160-
}
161-
return super.has(flags);
158+
return ((Checks<Catch>) ctch -> ctch.has(flags)).any(catches) || super.has(flags);
162159
}
163160

164161
@Override

basex-core/src/main/java/org/basex/query/func/DynFuncCall.java

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -143,10 +143,9 @@ FItem evalFunc(final QueryContext qc) throws QueryException {
143143

144144
@Override
145145
public boolean has(final Flag... flags) {
146-
if(Flag.UPD.oneOf(flags) && (updating || sc().mixUpdates)) return true;
147-
if(Flag.NDT.oneOf(flags) && (ndt || updating || sc().mixUpdates)) return true;
148-
final Flag[] flgs = Flag.remove(flags, Flag.UPD);
149-
return flgs.length != 0 && super.has(flgs);
146+
return Flag.UPD.oneOf(flags) && (updating || sc().mixUpdates) ||
147+
Flag.NDT.oneOf(flags) && (ndt || updating || sc().mixUpdates) ||
148+
super.has(Flag.remove(flags, Flag.UPD));
150149
}
151150

152151
@Override

basex-core/src/main/java/org/basex/query/func/StandardFunc.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -207,8 +207,7 @@ public final boolean has(final Flag... flags) {
207207
if(definition.has(flag)) return true;
208208
}
209209
// check arguments (without function invocation; it only applies to function itself)
210-
final Flag[] flgs = Flag.remove(flags, Flag.HOF);
211-
return flgs.length != 0 && super.has(flgs);
210+
return super.has(Flag.remove(flags, Flag.HOF));
212211
}
213212

214213
/**

basex-core/src/main/java/org/basex/query/func/java/StaticJavaCall.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -93,10 +93,10 @@ public StaticJavaCall copy(final CompileContext cc, final IntObjMap<Var> vm) {
9393
@Override
9494
public boolean has(final Flag... flags) {
9595
return Flag.UPD.oneOf(flags) && method.getAnnotation(Updating.class) != null ||
96-
Flag.NDT.oneOf(flags) && method.getAnnotation(Deterministic.class) == null ||
97-
(Flag.CTX.oneOf(flags) || Flag.POS.oneOf(flags)) &&
98-
method.getAnnotation(FocusDependent.class) != null ||
99-
super.has(flags);
96+
Flag.NDT.oneOf(flags) && method.getAnnotation(Deterministic.class) == null ||
97+
(Flag.CTX.oneOf(flags) || Flag.POS.oneOf(flags)) &&
98+
method.getAnnotation(FocusDependent.class) != null ||
99+
super.has(flags);
100100
}
101101

102102
@Override

basex-core/src/main/java/org/basex/query/up/expr/Copy.java

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -41,11 +41,6 @@ public void checkUp() throws QueryException {
4141
if(!modify.vacuous() && !modify.has(Flag.UPD)) throw UPMODIFY.get(info);
4242
}
4343

44-
@Override
45-
public boolean has(final Flag... flags) {
46-
return flags.length != 0 && super.has(flags);
47-
}
48-
4944
/**
5045
* Returns the position of the updating expression.
5146
* @return result expression

basex-core/src/main/java/org/basex/query/up/expr/Transform.java

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -92,13 +92,10 @@ public Value value(final QueryContext qc) throws QueryException {
9292

9393
@Override
9494
public boolean has(final Flag... flags) {
95-
for(final Let copy : copies) {
96-
if(copy.has(flags)) return true;
97-
}
98-
if(Flag.CNS.oneOf(flags) ||
99-
Flag.UPD.oneOf(flags) && arg(target()).has(Flag.UPD)) return true;
100-
final Flag[] flgs = Flag.remove(flags, Flag.UPD);
101-
return flgs.length != 0 && super.has(flgs);
95+
return ((Checks<Let>) copy -> copy.has(flags)).any(copies) ||
96+
Flag.CNS.oneOf(flags) ||
97+
Flag.UPD.oneOf(flags) && arg(target()).has(Flag.UPD) ||
98+
super.has(Flag.remove(flags, Flag.UPD));
10299
}
103100

104101
@Override

basex-core/src/main/java/org/basex/query/up/expr/TransformWith.java

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -88,11 +88,10 @@ public Value value(final QueryContext qc) throws QueryException {
8888
public boolean has(final Flag... flags) {
8989
// Context dependency, positional access: only check first expression.
9090
// Example: . update { delete node a }
91-
if(Flag.CNS.oneOf(flags) ||
92-
Flag.CTX.oneOf(flags) && arg(target()).has(Flag.CTX) ||
93-
Flag.POS.oneOf(flags) && arg(target()).has(Flag.POS)) return true;
94-
final Flag[] flgs = Flag.remove(flags, Flag.UPD, Flag.POS, Flag.CTX);
95-
return flgs.length != 0 && super.has(flgs);
91+
return Flag.CNS.oneOf(flags) ||
92+
Flag.CTX.oneOf(flags) && arg(target()).has(Flag.CTX) ||
93+
Flag.POS.oneOf(flags) && arg(target()).has(Flag.POS) ||
94+
super.has(Flag.remove(flags, Flag.UPD, Flag.POS, Flag.CTX));
9695
}
9796

9897
@Override

0 commit comments

Comments
 (0)