tokiwa-software / fuzion

The Fuzion Language Implementation
https://fuzion-lang.dev
GNU General Public License v3.0
47 stars 11 forks source link

webserver.fz hits unjustified? require-condition #3909

Open maxteufel opened 2 weeks ago

maxteufel commented 2 weeks ago

applying this patch to the flangdev webserver:

diff --git a/src/webserver/route_request.fz b/src/webserver/route_request.fz
index ad6e6e0e..0255ab02 100644
--- a/src/webserver/route_request.fz
+++ b/src/webserver/route_request.fz
@@ -40,10 +40,10 @@ do_register (client Java.java.net.InetAddress, form_data lock_free.map String St
   if has_registered_recently client
     "<div class='text-center'>Only one registration per IP possible within 10 minutes.</div>"
   else
-    registration_result := jflang.User_static.register (fuzion_to_java_map form_data)
+    registration_result := user.register form_data
     # NYI: registration rate limit
     match registration_result
-      rr Java.java.lang.__jString => rr.as_string
+      rr String => rr
       e error => "<div class='text-center'>*** Registration failed: {e}</div>"

causes the following require-condition failure

error 1: java.lang.Error: require-condition2 failed: Clazzes.java:280 "(Errors.any() || !actualType.dependsOnGenericsExceptTHIS_TYPE(), Errors.any() || !actualType.containsThisType(), Errors.any() || outer == null || outer._type != Types.t_UNDEFINED, outer != null || actualType.feature().outer() == null, Errors.any() || actualType == Types.t_ERROR || outer == null || outer.feature().inheritsFrom(actualType.feature().outer()) || (outer.feature().isTypeFeature() /* NYI: REMOVE: workaround for #3160 */));"
    at dev.flang.util.ANY.require(ANY.java:180)
    at dev.flang.air.Clazzes.create(Clazzes.java:280)
    at dev.flang.air.Clazzes.create(Clazzes.java:256)
    at dev.flang.air.Clazzes.clazz(Clazzes.java:1104)
    at dev.flang.air.Clazzes.clazz(Clazzes.java:1101)
    at dev.flang.air.Clazz.directParents(Clazz.java:618)
    at dev.flang.air.Clazz.parents(Clazz.java:639)
    at dev.flang.air.Clazz.registerAsHeir(Clazz.java:577)
    at dev.flang.air.Clazz.registerAsHeir(Clazz.java:567)
    at dev.flang.air.Clazzes.create(Clazzes.java:408)
    at dev.flang.air.Clazzes.create(Clazzes.java:256)
    at dev.flang.air.Clazz.typeClazz(Clazz.java:2137)
    at dev.flang.air.Clazz.determineResultClazz(Clazz.java:2239)
    at dev.flang.air.Clazz.dependencies(Clazz.java:461)
    at dev.flang.air.Clazzes.create(Clazzes.java:417)
    at dev.flang.air.Clazz.lookup(Clazz.java:1316)
    at dev.flang.air.Clazz.lookup(Clazz.java:1125)
    at dev.flang.air.Clazz.lookup(Clazz.java:1103)
    at dev.flang.air.Clazz.lookupIfInstantiated(Clazz.java:969)
    at dev.flang.air.Clazz.lambda$findAllClasses$3(Clazz.java:1562)
    at dev.flang.air.Clazzes.calledDynamically(Clazzes.java:544)
    at dev.flang.air.Clazzes.findClazzes(Clazzes.java:812)
    at dev.flang.air.Clazz$EV.action(Clazz.java:138)
    at dev.flang.ast.Expr.visitExpressions(Expr.java:330)
    at dev.flang.ast.AbstractCall.visitExpressions(AbstractCall.java:98)
    at dev.flang.ast.AbstractCall.visitExpressions(AbstractCall.java:96)
    at dev.flang.ast.AbstractMatch.visitExpressions(AbstractMatch.java:115)
    at dev.flang.ast.AbstractBlock.visitExpressions(AbstractBlock.java:99)
    at dev.flang.ast.AbstractMatch.visitExpressions(AbstractMatch.java:115)
    at dev.flang.ast.AbstractBlock.visitExpressions(AbstractBlock.java:99)
    at dev.flang.ast.AbstractCall.visitExpressions(AbstractCall.java:96)
    at dev.flang.ast.AbstractMatch.visitExpressions(AbstractMatch.java:115)
    at dev.flang.ast.AbstractBlock.visitExpressions(AbstractBlock.java:99)
    at dev.flang.ast.AbstractMatch.visitExpressions(AbstractMatch.java:115)
    at dev.flang.ast.AbstractBlock.visitExpressions(AbstractBlock.java:99)
    at dev.flang.ast.AbstractCall.visitExpressions(AbstractCall.java:96)
    at dev.flang.ast.AbstractMatch.visitExpressions(AbstractMatch.java:115)
    at dev.flang.ast.AbstractBlock.visitExpressions(AbstractBlock.java:99)
    at dev.flang.ast.AbstractCall.visitExpressions(AbstractCall.java:96)
    at dev.flang.ast.AbstractAssign.visitExpressions(AbstractAssign.java:139)
    at dev.flang.ast.AbstractBlock.visitExpressions(AbstractBlock.java:99)
    at dev.flang.ast.AbstractFeature.visitExpressions(AbstractFeature.java:1629)
    at dev.flang.air.Clazz.inspectCode(Clazz.java:1514)
    at dev.flang.air.Clazz.findAllClasses(Clazz.java:1558)
    at dev.flang.air.Clazzes.findAllClasses(Clazzes.java:469)
    at dev.flang.fuir.AirFUIR.<init>(AirFUIR.java:165)
    at dev.flang.opt.Optimizer.fuir(Optimizer.java:79)
    at dev.flang.tools.Fuzion$Backend.processFrontEnd(Fuzion.java:507)
    at dev.flang.tools.Fuzion.lambda$parseArgsForBackend$4(Fuzion.java:1072)
    at dev.flang.tools.Tool.lambda$run$0(Tool.java:142)
    at dev.flang.util.Errors.runAndExit(Errors.java:895)
    at dev.flang.tools.Tool.run(Tool.java:142)
    at dev.flang.tools.Fuzion.main(Fuzion.java:627)

*** fatal errors encountered, stopping.
one error.

but no (obvious) error when compiling without require-conditions.

(unfortunately no smaller example available for now)

michaellilltokiwa commented 1 day ago

@maxteufel please check if this is still the case after the merge of AIR/FUIR