UNPKG

minigrace

Version:

A compiler for the Grace programming language

408 lines (407 loc) 18.8 kB
let gracecode_typeComparison_sourceFile = "/Users/black/Development/mg/gracelang/minigrace/typeComparison.grace"; let gracecode_typeComparison_sha256 = "53b1074e506778b207cb977896a7a515f8e7a2a10eb0c685d19c34b95738e07e"; let gracecode_typeComparison_minigraceRevision = "b57591d29fc5ee5270d114920bf671367b8c3ecb"; let gracecode_typeComparison_minigraceGeneration = "5171"; if (typeof gctCache !== "undefined") gctCache["typeComparison"] = "dialect:\n standard\nfreshScopes:\nmethodTypes:$100:\n methodsIn(DesiredType:Unknown)missingFrom(value:Unknown) \u2192 String\n protocolOf(value:Unknown)notCoveredBy(Q:Type) \u2192 String\nmodules:\n mirror\n standard\npath:\n /Users/black/Development/mg/gracelang/minigrace/typeComparison.grace\nscope:$100:\n asDebugString String (go) $scope_string\n asString String (go) $scope_string\n basicAsString String (go) $scope_string\n isMe(1) Boolean (go) $scope_boolean\n methodsIn(1)missingFrom(1) String (mth) $scope_done\n myIdentityHash Number (go) $scope_number\n protocolOf(1)notCoveredBy(1) String (mth) $scope_done\nself:\n $100\ntypes:\n"; if (typeof originalSourceLines !== "undefined") { originalSourceLines["typeComparison"] = [ "#pragma noTypeChecks", "dialect \"standard\"", "import \"mirror\" as mirror", "", "method methodsIn(DesiredType) missingFrom (value) -> String {", " def vMethods = mirror.reflect(value).methodNames >> set", " def tMethods = DesiredType.methodNames >> set", " def missing = list.withAll(tMethods -- vMethods).sort", " def n = missing.size", " if (n == 0) then {", " ProgrammingError.raise \"{value.asDebugString} seems to have all the methods of {DesiredType}\"", " }", " var s := \"\"", " missing.keysAndValuesDo { ix, each ->", " s := s ++ each", " if (ix == (n - 1)) then {", " if (n > 2) then {", " s := s ++ \", and \" // Oxford comma", " } else {", " s := s ++ \" and \"", " }", " } elseif { ix < n } then {", " s := s ++ \", \"", " }", " }", " return s", "}", "method protocolOf(value) notCoveredBy (Q:Type) -> String {", " def vMethods = mirror.reflect(value).methodNames >> set", " def qMethods = Q.methodNames >> set", " def missing = list.withAll(vMethods -- qMethods).sort", " def n = missing.size", " if (n == 0) then { return \"\" }", " var s := \"\"", " missing.keysAndValuesDo { ix, each ->", " s := s ++ each", " if (ix == (n - 1)) then {", " if (n > 2) then {", " s := s ++ \", and \" // Oxford comma", " } else {", " s := s ++ \" and \"", " }", " } elseif { ix < n } then {", " s := s ++ \", \"", " }", " }", " return s", "}" ]; } function gracecode_typeComparison() { importedModules["typeComparison"] = this; const var_$module = this; this.definitionModule = "typeComparison"; this.definitionLine = 1; setLineNumber(2); // compilenode dialect // Dialect "standard" const var_$dialect = do_import("standard", gracecode_standard); this.outer = var_$dialect; setLineNumber(3); // compilenode import // Import of "mirror" as mirror if (typeof gracecode_mirror == "undefined") throw new GraceExceptionPacket(EnvironmentExceptionObject, new GraceString("could not find module mirror")); var var_mirror = do_import("mirror", gracecode_mirror); var func0 = function(argcv) { // accessor method mirror, line 3 const numArgs = arguments.length - 1; if (numArgs > 0) raiseTypeArgError("mirror", 0, numArgs - 0); return var_mirror; }; // end of method mirror this.methods["mirror"] = func0; func0.methodName = "mirror"; func0.paramCounts = [0]; func0.paramNames = []; func0.definitionLine = 3; func0.definitionModule = "typeComparison"; func0.debug = "import"; func0.confidential = true; this.closureKeys = this.closureKeys || []; this.closureKeys.push("outer_typeComparison_1"); this.outer_typeComparison_1 = var_$dialect; var func1 = function(argcv, var_DesiredType, var_value) { // method methodsIn(_)missingFrom(_), line 5 var returnTarget = invocationCount; invocationCount++; const numArgs = arguments.length - 1; if ((numArgs > 2) && (numArgs !== 2)) { raiseTypeArgError("methodsIn(_)missingFrom(_)", 0, numArgs - 2); } setLineNumber(6); // compilenode member var call3 = selfRequest(var_$dialect, "set", [0]); // call case 4: other requests // call case 4: other requests // call case 4: other requests var call5 = request(var_mirror, "reflect(1)", [1], var_value); var call4 = request(call5, "methodNames", [0]); var term2 = request(call4, ">>(1)", [1], call3); var var_vMethods = term2; setLineNumber(7); // compilenode member var call7 = selfRequest(var_$dialect, "set", [0]); // call case 4: other requests // call case 4: other requests var call8 = request(var_DesiredType, "methodNames", [0]); var term6 = request(call8, ">>(1)", [1], call7); var var_tMethods = term6; setLineNumber(8); // compilenode member // call case 4: other requests if (var_vMethods === undefined) raiseUninitializedVariable("vMethods"); // call case 4: other requests if (var_tMethods === undefined) raiseUninitializedVariable("tMethods"); var term11 = request(var_tMethods, "--(1)", [1], var_vMethods); // call case 4: other requests var call12 = selfRequest(var_$dialect, "list", [0]); var call10 = request(call12, "withAll(1)", [1], term11); var call9 = request(call10, "sort", [0]); var var_missing = call9; setLineNumber(9); // compilenode member // call case 4: other requests if (var_missing === undefined) raiseUninitializedVariable("missing"); var call13 = request(var_missing, "size", [0]); var var_n = call13; var if14 = GraceDone; setLineNumber(10); // compilenode num // call case 4: other requests if (var_n === undefined) raiseUninitializedVariable("n"); var term15 = request(var_n, "==(1)", [1], new GraceNum(0)); if (Grace_isTrue(term15)) { setLineNumber(11); // compilenode string // call case 4: other requests // call case 4: other requests var string20 = new GraceString(" seems to have all the methods of "); // call case 4: other requests // call case 4: other requests var call22 = request(var_value, "asDebugString", [0]); // call case 4: other requests var concat21 = request(GraceEmptyString, "++(1)", [1], call22); var concat19 = request(concat21, "++(1)", [1], string20); var concat18 = request(concat19, "++(1)", [1], var_DesiredType); var concat17 = request(concat18, "++(1)", [1], GraceEmptyString); // call case 4: other requests var call23 = selfRequest(var_$dialect, "ProgrammingError", [0]); var call16 = request(call23, "raise(1)", [1], concat17); if14 = call16; } setLineNumber(13); // compilenode string var var_s = GraceEmptyString; setLineNumber(14); // compilenode block var block25 = new GraceBlock(this, 14, 2); block25.guard = jsTrue; block25.real = function block25(var_ix, var_each) { setLineNumber(15); // compilenode op // call case 4: other requests if (var_s === undefined) raiseUninitializedVariable("s"); var concat26 = request(var_s, "++(1)", [1], var_each); var_s = concat26; var if27 = GraceDone; setLineNumber(16); // compilenode num // call case 4: other requests if (var_n === undefined) raiseUninitializedVariable("n"); var diff29 = request(var_n, "-(1)", [1], new GraceNum(1)); // call case 4: other requests var term28 = request(var_ix, "==(1)", [1], diff29); if (Grace_isTrue(term28)) { var if30 = GraceDone; setLineNumber(17); // compilenode num // call case 4: other requests if (var_n === undefined) raiseUninitializedVariable("n"); var term31 = request(var_n, ">(1)", [1], new GraceNum(2)); if (Grace_isTrue(term31)) { setLineNumber(18); // compilenode string var string33 = new GraceString(", and "); // call case 4: other requests if (var_s === undefined) raiseUninitializedVariable("s"); var concat32 = request(var_s, "++(1)", [1], string33); var_s = concat32; if30 = GraceDone; } else { setLineNumber(20); // compilenode string var string35 = new GraceString(" and "); // call case 4: other requests if (var_s === undefined) raiseUninitializedVariable("s"); var concat34 = request(var_s, "++(1)", [1], string35); var_s = concat34; if30 = GraceDone; } if27 = if30; } else { var if36 = GraceDone; setLineNumber(22); // compilenode op if (var_n === undefined) raiseUninitializedVariable("n"); // call case 4: other requests var term37 = request(var_ix, "<(1)", [1], var_n); if (Grace_isTrue(term37)) { setLineNumber(23); // compilenode string var string39 = new GraceString(", "); // call case 4: other requests if (var_s === undefined) raiseUninitializedVariable("s"); var concat38 = request(var_s, "++(1)", [1], string39); var_s = concat38; if36 = GraceDone; } if27 = if36; } return if27; }; let applyMeth25 = function apply_2 (argcv, ...args) { if (this.guard.apply(this.receiver, args)) return this.real.apply(this.receiver, args); badBlockArgs.apply(this, args); }; applyMeth25.methodName = "apply(2)"; applyMeth25.paramCounts = [2]; applyMeth25.paramNames = ["ix", "each"]; applyMeth25.definitionLine = 14; applyMeth25.definitionModule = "typeComparison"; block25.methods["apply(2)"] = applyMeth25; let matchesMeth25 = function matches_2 (argcv, ...args) { return this.guard.apply(this.receiver, args) ? GraceTrue : GraceFalse; }; matchesMeth25.methodName = "matches(2)"; matchesMeth25.paramCounts = [2]; matchesMeth25.paramNames = ["ix", "each"]; matchesMeth25.definitionLine = 14; matchesMeth25.definitionModule = "typeComparison"; block25.methods["matches(2)"] = matchesMeth25; // call case 4: other requests if (var_missing === undefined) raiseUninitializedVariable("missing"); var call24 = request(var_missing, "keysAndValuesDo(1)", [1], block25); setLineNumber(26); // compilenode return if (var_s === undefined) raiseUninitializedVariable("s"); return var_s; }; // end of method methodsIn(_)missingFrom(_) setLineNumber(5); // compilenode member var call40 = selfRequest(var_$dialect, "String", [0]); func1.returnType = call40; this.methods["methodsIn(1)missingFrom(1)"] = func1; func1.methodName = "methodsIn(1)missingFrom(1)"; func1.paramCounts = [1, 1]; func1.paramNames = ["DesiredType", "value"]; func1.definitionLine = 5; func1.definitionModule = "typeComparison"; var func41 = function(argcv, var_value, var_Q) { // method protocolOf(_)notCoveredBy(_), line 28 var returnTarget = invocationCount; invocationCount++; const numArgs = arguments.length - 1; if ((numArgs > 2) && (numArgs !== 2)) { raiseTypeArgError("protocolOf(_)notCoveredBy(_)", 0, numArgs - 2); } setLineNumber(29); // compilenode member var call43 = selfRequest(var_$dialect, "set", [0]); // call case 4: other requests // call case 4: other requests // call case 4: other requests var call45 = request(var_mirror, "reflect(1)", [1], var_value); var call44 = request(call45, "methodNames", [0]); var term42 = request(call44, ">>(1)", [1], call43); var var_vMethods = term42; setLineNumber(30); // compilenode member var call47 = selfRequest(var_$dialect, "set", [0]); // call case 4: other requests // call case 4: other requests var call48 = request(var_Q, "methodNames", [0]); var term46 = request(call48, ">>(1)", [1], call47); var var_qMethods = term46; setLineNumber(31); // compilenode member // call case 4: other requests if (var_qMethods === undefined) raiseUninitializedVariable("qMethods"); // call case 4: other requests if (var_vMethods === undefined) raiseUninitializedVariable("vMethods"); var term51 = request(var_vMethods, "--(1)", [1], var_qMethods); // call case 4: other requests var call52 = selfRequest(var_$dialect, "list", [0]); var call50 = request(call52, "withAll(1)", [1], term51); var call49 = request(call50, "sort", [0]); var var_missing = call49; setLineNumber(32); // compilenode member // call case 4: other requests if (var_missing === undefined) raiseUninitializedVariable("missing"); var call53 = request(var_missing, "size", [0]); var var_n = call53; var if54 = GraceDone; setLineNumber(33); // compilenode num // call case 4: other requests if (var_n === undefined) raiseUninitializedVariable("n"); var term55 = request(var_n, "==(1)", [1], new GraceNum(0)); if (Grace_isTrue(term55)) { return GraceEmptyString; } setLineNumber(34); // compilenode string var var_s = GraceEmptyString; setLineNumber(35); // compilenode block var block57 = new GraceBlock(this, 35, 2); block57.guard = jsTrue; block57.real = function block57(var_ix, var_each) { setLineNumber(36); // compilenode op // call case 4: other requests if (var_s === undefined) raiseUninitializedVariable("s"); var concat58 = request(var_s, "++(1)", [1], var_each); var_s = concat58; var if59 = GraceDone; setLineNumber(37); // compilenode num // call case 4: other requests if (var_n === undefined) raiseUninitializedVariable("n"); var diff61 = request(var_n, "-(1)", [1], new GraceNum(1)); // call case 4: other requests var term60 = request(var_ix, "==(1)", [1], diff61); if (Grace_isTrue(term60)) { var if62 = GraceDone; setLineNumber(38); // compilenode num // call case 4: other requests if (var_n === undefined) raiseUninitializedVariable("n"); var term63 = request(var_n, ">(1)", [1], new GraceNum(2)); if (Grace_isTrue(term63)) { setLineNumber(39); // compilenode string var string65 = new GraceString(", and "); // call case 4: other requests if (var_s === undefined) raiseUninitializedVariable("s"); var concat64 = request(var_s, "++(1)", [1], string65); var_s = concat64; if62 = GraceDone; } else { setLineNumber(41); // compilenode string var string67 = new GraceString(" and "); // call case 4: other requests if (var_s === undefined) raiseUninitializedVariable("s"); var concat66 = request(var_s, "++(1)", [1], string67); var_s = concat66; if62 = GraceDone; } if59 = if62; } else { var if68 = GraceDone; setLineNumber(43); // compilenode op if (var_n === undefined) raiseUninitializedVariable("n"); // call case 4: other requests var term69 = request(var_ix, "<(1)", [1], var_n); if (Grace_isTrue(term69)) { setLineNumber(44); // compilenode string var string71 = new GraceString(", "); // call case 4: other requests if (var_s === undefined) raiseUninitializedVariable("s"); var concat70 = request(var_s, "++(1)", [1], string71); var_s = concat70; if68 = GraceDone; } if59 = if68; } return if59; }; let applyMeth57 = function apply_2 (argcv, ...args) { if (this.guard.apply(this.receiver, args)) return this.real.apply(this.receiver, args); badBlockArgs.apply(this, args); }; applyMeth57.methodName = "apply(2)"; applyMeth57.paramCounts = [2]; applyMeth57.paramNames = ["ix", "each"]; applyMeth57.definitionLine = 35; applyMeth57.definitionModule = "typeComparison"; block57.methods["apply(2)"] = applyMeth57; let matchesMeth57 = function matches_2 (argcv, ...args) { return this.guard.apply(this.receiver, args) ? GraceTrue : GraceFalse; }; matchesMeth57.methodName = "matches(2)"; matchesMeth57.paramCounts = [2]; matchesMeth57.paramNames = ["ix", "each"]; matchesMeth57.definitionLine = 35; matchesMeth57.definitionModule = "typeComparison"; block57.methods["matches(2)"] = matchesMeth57; // call case 4: other requests if (var_missing === undefined) raiseUninitializedVariable("missing"); var call56 = request(var_missing, "keysAndValuesDo(1)", [1], block57); setLineNumber(47); // compilenode return if (var_s === undefined) raiseUninitializedVariable("s"); return var_s; }; // end of method protocolOf(_)notCoveredBy(_) setLineNumber(28); // compilenode member var call72 = selfRequest(var_$dialect, "Type", [0]); func41.paramTypes = [type_Unknown, call72]; var call73 = selfRequest(var_$dialect, "String", [0]); func41.returnType = call73; this.methods["protocolOf(1)notCoveredBy(1)"] = func41; func41.methodName = "protocolOf(1)notCoveredBy(1)"; func41.paramCounts = [1, 1]; func41.paramNames = ["value", "Q"]; func41.definitionLine = 28; func41.definitionModule = "typeComparison"; return this; } if (typeof global !== "undefined") global.gracecode_typeComparison = gracecode_typeComparison; if (typeof window !== "undefined") window.gracecode_typeComparison = gracecode_typeComparison; gracecode_typeComparison.definitionModule = "typeComparison"; gracecode_typeComparison.sourceFile = gracecode_typeComparison_sourceFile; gracecode_typeComparison.sha256 = gracecode_typeComparison_sha256; gracecode_typeComparison.minigraceRevision = gracecode_typeComparison_minigraceRevision; gracecode_typeComparison.minigraceGeneration = gracecode_typeComparison_minigraceGeneration; gracecode_typeComparison.imports = [ ["standard", "5016aa3a5b2e0d35a67289d21c1e41cf8d73bef931ceea7b35f6a8b10a1386cf"], ["mirror", "50f3da794fdf32fc3f5de55752f15752f46ae09666701a8c24a3578df41bc6bf"] ]; gracecode_typeComparison.definitionLine = 1;