Categories:
Audio (13)
Biotech (29)
Bytecode (36)
Database (77)
Framework (7)
Game (7)
General (507)
Graphics (53)
I/O (35)
IDE (2)
JAR Tools (101)
JavaBeans (21)
JDBC (121)
JDK (426)
JSP (20)
Logging (108)
Mail (58)
Messaging (8)
Network (84)
PDF (97)
Report (7)
Scripting (84)
Security (32)
Server (121)
Servlet (26)
SOAP (24)
Testing (54)
Web (15)
XML (309)
Collections:
Other Resources:
JDK 17 jdk.compiler.jmod - Compiler Tool
JDK 17 jdk.compiler.jmod is the JMOD file for JDK 17 Compiler tool, which can be invoked by the "javac" command.
JDK 17 Compiler tool compiled class files are stored in \fyicenter\jdk-17.0.5\jmods\jdk.compiler.jmod.
JDK 17 Compiler tool compiled class files are also linked and stored in the \fyicenter\jdk-17.0.5\lib\modules JImage file.
JDK 17 Compiler source code files are stored in \fyicenter\jdk-17.0.5\lib\src.zip\jdk.compiler.
You can click and view the content of each source code file in the list below.
✍: FYIcenter
⏎ com/sun/tools/javac/comp/MatchBindingsComputer.java
/* * Copyright (c) 2017, 2020, Oracle and/or its affiliates. All rights reserved. * ORACLE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms. * * * * * * * * * * * * * * * * * * * * */ package com.sun.tools.javac.comp; import com.sun.tools.javac.code.Symbol; import com.sun.tools.javac.code.Symbol.BindingSymbol; import com.sun.tools.javac.resources.CompilerProperties.Errors; import com.sun.tools.javac.tree.JCTree; import com.sun.tools.javac.tree.JCTree.JCGuardPattern; import com.sun.tools.javac.tree.JCTree.Tag; import com.sun.tools.javac.tree.TreeScanner; import com.sun.tools.javac.util.Context; import com.sun.tools.javac.util.JCDiagnostic.DiagnosticPosition; import com.sun.tools.javac.util.List; import com.sun.tools.javac.util.Log; import static com.sun.tools.javac.code.Flags.CLASH; public class MatchBindingsComputer extends TreeScanner { public static final MatchBindings EMPTY = new MatchBindings(List.nil(), List.nil()); protected static final Context.Key<MatchBindingsComputer> matchBindingsComputerKey = new Context.Key<>(); private final Log log; public static MatchBindingsComputer instance(Context context) { MatchBindingsComputer instance = context.get(matchBindingsComputerKey); if (instance == null) instance = new MatchBindingsComputer(context); return instance; } protected MatchBindingsComputer(Context context) { this.log = Log.instance(context); } public MatchBindings conditional(JCTree tree, MatchBindings condBindings, MatchBindings trueBindings, MatchBindings falseBindings) { if (condBindings == EMPTY && trueBindings == EMPTY && falseBindings == EMPTY) { return EMPTY; } DiagnosticPosition pos = tree.pos(); //A pattern variable is introduced both by a when true, and by c when true: List<BindingSymbol> xTzT = intersection(pos, condBindings.bindingsWhenTrue, falseBindings.bindingsWhenTrue); //A pattern variable is introduced both by a when false, and by b when true: List<BindingSymbol> xFyT = intersection(pos, condBindings.bindingsWhenFalse, trueBindings.bindingsWhenTrue); //A pattern variable is introduced both by b when true, and by c when true: List<BindingSymbol> yTzT = intersection(pos, trueBindings.bindingsWhenTrue, falseBindings.bindingsWhenTrue); //A pattern variable is introduced both by a when true, and by c when false: List<BindingSymbol> xTzF = intersection(pos, condBindings.bindingsWhenTrue, falseBindings.bindingsWhenFalse); //A pattern variable is introduced both by a when false, and by b when false: List<BindingSymbol> xFyF = intersection(pos, condBindings.bindingsWhenFalse, trueBindings.bindingsWhenFalse); //A pattern variable is introduced both by b when false, and by c when false: List<BindingSymbol> yFzF = intersection(pos, trueBindings.bindingsWhenFalse, falseBindings.bindingsWhenFalse); //error recovery: /* if e = "x ? y : z", then: e.T = union(intersect(y.T, z.T), intersect(x.T, z.T), intersect(x.F, y.T)) e.F = union(intersect(y.F, z.F), intersect(x.T, z.F), intersect(x.F, y.F)) */ List<BindingSymbol> bindingsWhenTrue = union(pos, yTzT, xTzT, xFyT); List<BindingSymbol> bindingsWhenFalse = union(pos, yFzF, xTzF, xFyF); return new MatchBindings(bindingsWhenTrue, bindingsWhenFalse); } public MatchBindings unary(JCTree tree, MatchBindings bindings) { if (bindings == EMPTY || !tree.hasTag(Tag.NOT)) return bindings; return new MatchBindings(bindings.bindingsWhenFalse, bindings.bindingsWhenTrue); } public MatchBindings binary(JCTree tree, MatchBindings lhsBindings, MatchBindings rhsBindings) { switch (tree.getTag()) { case AND: { return andOperation(tree.pos(), lhsBindings, rhsBindings); } case OR: { // e.T = intersection(x.T, y.T) (error recovery) // e.F = union(x.F, y.F) List<BindingSymbol> bindingsWhenTrue = //error recovery intersection(tree.pos(), lhsBindings.bindingsWhenTrue, rhsBindings.bindingsWhenTrue); List<Symbol.BindingSymbol> bindingsWhenFalse = union(tree.pos(), lhsBindings.bindingsWhenFalse, rhsBindings.bindingsWhenFalse); return new MatchBindings(bindingsWhenTrue, bindingsWhenFalse); } } return EMPTY; } public MatchBindings guardedPattern(JCGuardPattern tree, MatchBindings patternBindings, MatchBindings guardBindings) { return andOperation(tree.pos(), patternBindings, guardBindings); } public MatchBindings andOperation(DiagnosticPosition pos, MatchBindings lhsBindings, MatchBindings rhsBindings) { // e.T = union(x.T, y.T) // e.F = intersection(x.F, y.F) (error recovery) List<BindingSymbol> bindingsWhenTrue = union(pos, lhsBindings.bindingsWhenTrue, rhsBindings.bindingsWhenTrue); List<BindingSymbol> bindingsWhenFalse = //error recovery intersection(pos, lhsBindings.bindingsWhenFalse, rhsBindings.bindingsWhenFalse); return new MatchBindings(bindingsWhenTrue, bindingsWhenFalse); } public MatchBindings switchCase(JCTree tree, MatchBindings prevBindings, MatchBindings currentBindings) { if (prevBindings == null) return currentBindings; if (prevBindings.nullPattern) { return currentBindings; } if (currentBindings.nullPattern) { return prevBindings; } return new MatchBindings(intersection(tree.pos(), prevBindings.bindingsWhenTrue, currentBindings.bindingsWhenTrue), intersection(tree.pos(), prevBindings.bindingsWhenFalse, currentBindings.bindingsWhenFalse)); } public MatchBindings finishBindings(JCTree tree, MatchBindings matchBindings) { switch (tree.getTag()) { case NOT: case AND: case OR: case BINDINGPATTERN: case PARENTHESIZEDPATTERN: case GUARDPATTERN: case PARENS: case TYPETEST: case CONDEXPR: //error recovery: return matchBindings; default: return MatchBindingsComputer.EMPTY; } } public static class MatchBindings { public final List<BindingSymbol> bindingsWhenTrue; public final List<BindingSymbol> bindingsWhenFalse; public final boolean nullPattern; public MatchBindings(List<BindingSymbol> bindingsWhenTrue, List<BindingSymbol> bindingsWhenFalse) { this(bindingsWhenTrue, bindingsWhenFalse, false); } public MatchBindings(List<BindingSymbol> bindingsWhenTrue, List<BindingSymbol> bindingsWhenFalse, boolean nullPattern) { this.bindingsWhenTrue = bindingsWhenTrue; this.bindingsWhenFalse = bindingsWhenFalse; this.nullPattern = nullPattern; } } private List<BindingSymbol> intersection(DiagnosticPosition pos, List<BindingSymbol> lhsBindings, List<BindingSymbol> rhsBindings) { // It is an error if, for intersection(a,b), if a and b contain the same variable name (may be eventually relaxed to merge variables of same type) List<BindingSymbol> list = List.nil(); for (BindingSymbol v1 : lhsBindings) { for (BindingSymbol v2 : rhsBindings) { if (v1.name == v2.name && (v1.flags() & CLASH) == 0 && (v2.flags() & CLASH) == 0) { log.error(pos, Errors.MatchBindingExists); v2.flags_field |= CLASH; list = list.append(v2); } } } return list; } @SafeVarargs private final List<BindingSymbol> union(DiagnosticPosition pos, List<BindingSymbol> lhsBindings, List<BindingSymbol> ... rhsBindings_s) { // It is an error if for union(a,b), a and b contain the same name (disjoint union). List<BindingSymbol> list = lhsBindings; for (List<BindingSymbol> rhsBindings : rhsBindings_s) { for (BindingSymbol v : rhsBindings) { for (BindingSymbol ov : list) { if (ov.name == v.name && (ov.flags() & CLASH) == 0 && (v.flags() & CLASH) == 0) { log.error(pos, Errors.MatchBindingExists); v.flags_field |= CLASH; } } list = list.append(v); } } return list; } }
⏎ com/sun/tools/javac/comp/MatchBindingsComputer.java
Or download all of them as a single archive file:
File name: jdk.compiler-17.0.5-src.zip File size: 1450209 bytes Release date: 2022-09-13 Download
⇒ JDK 17 jdk.crypto.cryptoki.jmod - Crypto KI Module
2023-10-15, 17731👍, 0💬
Popular Posts:
What Is in Xerces-J-bin.2.12.2.zip? Xerces-J-bin.2.12.2.zip file is the distribution package ZIP fil...
JDK 11 java.xml.crypto.jmod is the JMOD file for JDK 11 XML (eXtensible Markup Language) Crypto modu...
The Bouncy Castle Crypto package is a Java implementation of cryptographic algorithms, it was develo...
ASM is an all purpose Java bytecode manipulation and analysis framework. It can be used to modify ex...
JDK 11 jdk.scripting.nashorn.jm odis the JMOD file for JDK 11 Scripting Nashorn module. JDK 11 Scrip...