Fri, 05 Feb 2016 23:31:09 -0800
Merge
.hgtags | file | annotate | diff | comparison | revisions |
1.1 --- a/.hgtags Tue Jan 26 11:35:08 2016 -0800 1.2 +++ b/.hgtags Fri Feb 05 23:31:09 2016 -0800 1.3 @@ -536,9 +536,32 @@ 1.4 5b67278c6616dca433488697eb6f2f81fcbbf22d jdk8u72-b13 1.5 0ee6d8ae247d449950c18623513ccae4349e70d6 jdk8u72-b14 1.6 48d0c20256a37ad20d075091285ea23788186f9a jdk8u72-b15 1.7 +1a1711b8d11959992c27462d652003965ef3dc36 jdk8u73-b00 1.8 +c63c6cfda4da83e04dcc378e4c1f7e0d4fd6a008 jdk8u73-b01 1.9 +a6b8965d1e3e717205a02006c46bb3409c6187cb jdk8u73-b02 1.10 +0e6608ec3e9faa29e3ff1bc7fdb166602f698988 jdk8u74-b00 1.11 +4b10a2b486a9a950302de55e2495ac59bddae61a jdk8u74-b01 1.12 +55934388691bbbd9c53299cc6f2bdceb6af8860c jdk8u74-b02 1.13 ee6ec29fce4fa75ff846f7cbf61da162d8c5b605 jdk8u72-b31 1.14 +1a1711b8d11959992c27462d652003965ef3dc36 jdk8u73-b00 1.15 +c63c6cfda4da83e04dcc378e4c1f7e0d4fd6a008 jdk8u73-b01 1.16 +a6b8965d1e3e717205a02006c46bb3409c6187cb jdk8u73-b02 1.17 +0e6608ec3e9faa29e3ff1bc7fdb166602f698988 jdk8u74-b00 1.18 +4b10a2b486a9a950302de55e2495ac59bddae61a jdk8u74-b01 1.19 +55934388691bbbd9c53299cc6f2bdceb6af8860c jdk8u74-b02 1.20 +c5b33f88707967dc3b9ddb628e4efb57c0abc2db jdk8u74-b31 1.21 90b497af2ba5329448da3a46a185687ae17f7098 jdk8u75-b00 1.22 374719365422fa4867bc68f4edb00403289cd862 jdk8u75-b01 1.23 58a3f185c67cefee5ebf63fcc9c6da5e609c3705 jdk8u75-b02 1.24 400115d04e6eac9af5a7ee7ab8b1c570e2a3803b jdk8u75-b03 1.25 +580f87c4d91aa8cc493dbbd84a1be9671fd733f3 jdk8u75-b04 1.26 +4fd1c0d25a9cb847d9a0f6fe2be011eed6910a7f jdk8u75-b05 1.27 +494f23cf6614142b0138fadccd2252506b2aa7f8 jdk8u75-b06 1.28 +10ffafaf53404de7fd23784aa3ff6016d107b9c8 jdk8u76-b00 1.29 +0caab0d65a04d8cce71976a6bdc1ca0841bcbcf0 jdk8u76-b01 1.30 +78f0aa6199150e10f387989b9bd5997f72cdc4e1 jdk8u76-b02 1.31 +8969d6096fe123922bb3ac0c8f6f7b18c1c7668e jdk8u76-b03 1.32 +f8173fa5db9ba23e7cd935600f56a8a53157eb6e jdk8u76-b04 1.33 +a614462a11b25ebd1daa61c5c3678a695b7bb7df jdk8u76-b05 1.34 +05277263bb6532abb966fa0585248cb40c43a530 jdk8u76-b06 1.35 580f87c4d91aa8cc493dbbd84a1be9671fd733f3 jdk8u81-b00
2.1 --- a/src/share/classes/com/sun/tools/doclets/internal/toolkit/util/VisibleMemberMap.java Tue Jan 26 11:35:08 2016 -0800 2.2 +++ b/src/share/classes/com/sun/tools/doclets/internal/toolkit/util/VisibleMemberMap.java Fri Feb 05 23:31:09 2016 -0800 2.3 @@ -1,5 +1,5 @@ 2.4 /* 2.5 - * Copyright (c) 1999, 2013, Oracle and/or its affiliates. All rights reserved. 2.6 + * Copyright (c) 1999, 2016, Oracle and/or its affiliates. All rights reserved. 2.7 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 2.8 * 2.9 * This code is free software; you can redistribute it and/or modify it 2.10 @@ -250,7 +250,7 @@ 2.11 for (int i = 0; i < list.size(); i++) { 2.12 Object key = getMemberKey(list.get(i)); 2.13 Map<ProgramElementDoc, String> memberLevelMap = memberNameMap.get(key); 2.14 - if (level.equals(memberLevelMap.get(list.get(i)))) 2.15 + if (memberLevelMap != null && level.equals(memberLevelMap.get(list.get(i)))) 2.16 memberLevelMap.remove(list.get(i)); 2.17 } 2.18 }
3.1 --- a/src/share/classes/com/sun/tools/javac/comp/Attr.java Tue Jan 26 11:35:08 2016 -0800 3.2 +++ b/src/share/classes/com/sun/tools/javac/comp/Attr.java Fri Feb 05 23:31:09 2016 -0800 3.3 @@ -156,6 +156,8 @@ 3.4 unknownTypeInfo = new ResultInfo(TYP, Type.noType); 3.5 unknownTypeExprInfo = new ResultInfo(Kinds.TYP | Kinds.VAL, Type.noType); 3.6 recoveryInfo = new RecoveryInfo(deferredAttr.emptyDeferredAttrContext); 3.7 + 3.8 + noCheckTree = make.at(-1).Skip(); 3.9 } 3.10 3.11 /** Switch: relax some constraints for retrofit mode. 3.12 @@ -253,31 +255,34 @@ 3.13 Type check(final JCTree tree, final Type found, final int ownkind, final ResultInfo resultInfo) { 3.14 InferenceContext inferenceContext = resultInfo.checkContext.inferenceContext(); 3.15 Type owntype; 3.16 - if (!found.hasTag(ERROR) && !resultInfo.pt.hasTag(METHOD) && !resultInfo.pt.hasTag(FORALL)) { 3.17 - if ((ownkind & ~resultInfo.pkind) != 0) { 3.18 - log.error(tree.pos(), "unexpected.type", 3.19 + boolean shouldCheck = !found.hasTag(ERROR) && 3.20 + !resultInfo.pt.hasTag(METHOD) && 3.21 + !resultInfo.pt.hasTag(FORALL); 3.22 + if (shouldCheck && (ownkind & ~resultInfo.pkind) != 0) { 3.23 + log.error(tree.pos(), "unexpected.type", 3.24 kindNames(resultInfo.pkind), 3.25 kindName(ownkind)); 3.26 - owntype = types.createErrorType(found); 3.27 - } else if (allowPoly && inferenceContext.free(found)) { 3.28 - //delay the check if there are inference variables in the found type 3.29 - //this means we are dealing with a partially inferred poly expression 3.30 - owntype = resultInfo.pt; 3.31 - inferenceContext.addFreeTypeListener(List.of(found, resultInfo.pt), new FreeTypeListener() { 3.32 + owntype = types.createErrorType(found); 3.33 + } else if (allowPoly && inferenceContext.free(found)) { 3.34 + //delay the check if there are inference variables in the found type 3.35 + //this means we are dealing with a partially inferred poly expression 3.36 + owntype = shouldCheck ? resultInfo.pt : found; 3.37 + inferenceContext.addFreeTypeListener(List.of(found, resultInfo.pt), new FreeTypeListener() { 3.38 @Override 3.39 public void typesInferred(InferenceContext inferenceContext) { 3.40 ResultInfo pendingResult = 3.41 resultInfo.dup(inferenceContext.asInstType(resultInfo.pt)); 3.42 check(tree, inferenceContext.asInstType(found), ownkind, pendingResult); 3.43 } 3.44 - }); 3.45 - } else { 3.46 - owntype = resultInfo.check(tree, found); 3.47 - } 3.48 + }); 3.49 } else { 3.50 - owntype = found; 3.51 + owntype = shouldCheck ? 3.52 + resultInfo.check(tree, found) : 3.53 + found; 3.54 } 3.55 - tree.type = owntype; 3.56 + if (tree != noCheckTree) { 3.57 + tree.type = owntype; 3.58 + } 3.59 return owntype; 3.60 } 3.61 3.62 @@ -550,6 +555,10 @@ 3.63 */ 3.64 Type result; 3.65 3.66 + /** Synthetic tree to be used during 'fake' checks. 3.67 + */ 3.68 + JCTree noCheckTree; 3.69 + 3.70 /** Visitor method: attribute a tree, catching any completion failure 3.71 * exceptions. Return the tree's type. 3.72 * 3.73 @@ -653,8 +662,8 @@ 3.74 3.75 /** Attribute the arguments in a method call, returning the method kind. 3.76 */ 3.77 - int attribArgs(List<JCExpression> trees, Env<AttrContext> env, ListBuffer<Type> argtypes) { 3.78 - int kind = VAL; 3.79 + int attribArgs(int initialKind, List<JCExpression> trees, Env<AttrContext> env, ListBuffer<Type> argtypes) { 3.80 + int kind = initialKind; 3.81 for (JCExpression arg : trees) { 3.82 Type argtype; 3.83 if (allowPoly && deferredAttr.isDeferred(env, arg)) { 3.84 @@ -1730,7 +1739,7 @@ 3.85 localEnv.info.isSelfCall = true; 3.86 3.87 // Attribute arguments, yielding list of argument types. 3.88 - attribArgs(tree.args, localEnv, argtypesBuf); 3.89 + int kind = attribArgs(MTH, tree.args, localEnv, argtypesBuf); 3.90 argtypes = argtypesBuf.toList(); 3.91 typeargtypes = attribTypes(tree.typeargs, localEnv); 3.92 3.93 @@ -1795,7 +1804,7 @@ 3.94 // ...and check that it is legal in the current context. 3.95 // (this will also set the tree's type) 3.96 Type mpt = newMethodTemplate(resultInfo.pt, argtypes, typeargtypes); 3.97 - checkId(tree.meth, site, sym, localEnv, new ResultInfo(MTH, mpt)); 3.98 + checkId(tree.meth, site, sym, localEnv, new ResultInfo(kind, mpt)); 3.99 } 3.100 // Otherwise, `site' is an error type and we do nothing 3.101 } 3.102 @@ -1803,7 +1812,7 @@ 3.103 } else { 3.104 // Otherwise, we are seeing a regular method call. 3.105 // Attribute the arguments, yielding list of argument types, ... 3.106 - int kind = attribArgs(tree.args, localEnv, argtypesBuf); 3.107 + int kind = attribArgs(VAL, tree.args, localEnv, argtypesBuf); 3.108 argtypes = argtypesBuf.toList(); 3.109 typeargtypes = attribAnyTypes(tree.typeargs, localEnv); 3.110 3.111 @@ -1985,7 +1994,7 @@ 3.112 3.113 // Attribute constructor arguments. 3.114 ListBuffer<Type> argtypesBuf = new ListBuffer<>(); 3.115 - int pkind = attribArgs(tree.args, localEnv, argtypesBuf); 3.116 + int pkind = attribArgs(VAL, tree.args, localEnv, argtypesBuf); 3.117 List<Type> argtypes = argtypesBuf.toList(); 3.118 List<Type> typeargtypes = attribTypes(tree.typeargs, localEnv); 3.119 3.120 @@ -2043,7 +2052,7 @@ 3.121 } 3.122 }); 3.123 Type constructorType = tree.constructorType = types.createErrorType(clazztype); 3.124 - constructorType = checkId(tree, site, 3.125 + constructorType = checkId(noCheckTree, site, 3.126 constructor, 3.127 diamondEnv, 3.128 diamondResult); 3.129 @@ -2069,7 +2078,7 @@ 3.130 tree.constructor = rs.resolveConstructor( 3.131 tree.pos(), rsEnv, clazztype, argtypes, typeargtypes); 3.132 if (cdef == null) { //do not check twice! 3.133 - tree.constructorType = checkId(tree, 3.134 + tree.constructorType = checkId(noCheckTree, 3.135 clazztype, 3.136 tree.constructor, 3.137 rsEnv, 3.138 @@ -2150,7 +2159,7 @@ 3.139 tree.pos(), localEnv, clazztype, argtypes, typeargtypes); 3.140 Assert.check(sym.kind < AMBIGUOUS); 3.141 tree.constructor = sym; 3.142 - tree.constructorType = checkId(tree, 3.143 + tree.constructorType = checkId(noCheckTree, 3.144 clazztype, 3.145 tree.constructor, 3.146 localEnv, 3.147 @@ -2161,6 +2170,17 @@ 3.148 owntype = clazztype; 3.149 } 3.150 result = check(tree, owntype, VAL, resultInfo); 3.151 + InferenceContext inferenceContext = resultInfo.checkContext.inferenceContext(); 3.152 + if (tree.constructorType != null && inferenceContext.free(tree.constructorType)) { 3.153 + //we need to wait for inference to finish and then replace inference vars in the constructor type 3.154 + inferenceContext.addFreeTypeListener(List.of(tree.constructorType), 3.155 + new FreeTypeListener() { 3.156 + @Override 3.157 + public void typesInferred(InferenceContext instantiatedContext) { 3.158 + tree.constructorType = instantiatedContext.asInstType(tree.constructorType); 3.159 + } 3.160 + }); 3.161 + } 3.162 chk.validate(tree.typeargs, localEnv); 3.163 } 3.164 //where 3.165 @@ -2388,6 +2408,7 @@ 3.166 preFlow(that); 3.167 flow.analyzeLambda(env, that, make, isSpeculativeRound); 3.168 3.169 + that.type = currentTarget; //avoids recovery at this stage 3.170 checkLambdaCompatible(that, lambdaType, resultInfo.checkContext); 3.171 3.172 if (!isSpeculativeRound) { 3.173 @@ -2826,7 +2847,7 @@ 3.174 that.kind.isUnbound() ? argtypes.tail : argtypes, typeargtypes), 3.175 new FunctionalReturnContext(resultInfo.checkContext)); 3.176 3.177 - Type refType = checkId(that, lookupHelper.site, refSym, localEnv, checkInfo); 3.178 + Type refType = checkId(noCheckTree, lookupHelper.site, refSym, localEnv, checkInfo); 3.179 3.180 if (that.kind.isUnbound() && 3.181 resultInfo.checkContext.inferenceContext().free(argtypes.head)) { 3.182 @@ -2848,6 +2869,8 @@ 3.183 //is a no-op (as this has been taken care during method applicability) 3.184 boolean isSpeculativeRound = 3.185 resultInfo.checkContext.deferredAttrContext().mode == DeferredAttr.AttrMode.SPECULATIVE; 3.186 + 3.187 + that.type = currentTarget; //avoids recovery at this stage 3.188 checkReferenceCompatible(that, desc, refType, resultInfo.checkContext, isSpeculativeRound); 3.189 if (!isSpeculativeRound) { 3.190 checkAccessibleTypes(that, localEnv, resultInfo.checkContext.inferenceContext(), desc, currentTarget); 3.191 @@ -3968,7 +3991,7 @@ 3.192 all_multicatchTypes.append(ctype); 3.193 } 3.194 } 3.195 - Type t = check(tree, types.lub(multicatchTypes.toList()), TYP, resultInfo); 3.196 + Type t = check(noCheckTree, types.lub(multicatchTypes.toList()), TYP, resultInfo); 3.197 if (t.hasTag(CLASS)) { 3.198 List<Type> alternatives = 3.199 ((all_multicatchTypes == null) ? multicatchTypes : all_multicatchTypes).toList();
4.1 --- a/src/share/classes/com/sun/tools/javac/comp/AttrContext.java Tue Jan 26 11:35:08 2016 -0800 4.2 +++ b/src/share/classes/com/sun/tools/javac/comp/AttrContext.java Fri Feb 05 23:31:09 2016 -0800 4.3 @@ -25,6 +25,7 @@ 4.4 4.5 package com.sun.tools.javac.comp; 4.6 4.7 +import com.sun.tools.javac.tree.JCTree; 4.8 import com.sun.tools.javac.util.*; 4.9 import com.sun.tools.javac.code.*; 4.10 4.11 @@ -80,6 +81,13 @@ 4.12 */ 4.13 Type defaultSuperCallSite = null; 4.14 4.15 + /** Tree that when non null, is to be preferentially used in diagnostics. 4.16 + * Usually Env<AttrContext>.tree is the tree to be referred to in messages, 4.17 + * but this may not be true during the window a method is looked up in enclosing 4.18 + * contexts (JDK-8145466) 4.19 + */ 4.20 + JCTree preferredTreeForDiagnostics; 4.21 + 4.22 /** Duplicate this context, replacing scope field and copying all others. 4.23 */ 4.24 AttrContext dup(Scope scope) { 4.25 @@ -94,6 +102,7 @@ 4.26 info.returnResult = returnResult; 4.27 info.defaultSuperCallSite = defaultSuperCallSite; 4.28 info.isSerializable = isSerializable; 4.29 + info.preferredTreeForDiagnostics = preferredTreeForDiagnostics; 4.30 return info; 4.31 } 4.32
5.1 --- a/src/share/classes/com/sun/tools/javac/comp/LambdaToMethod.java Tue Jan 26 11:35:08 2016 -0800 5.2 +++ b/src/share/classes/com/sun/tools/javac/comp/LambdaToMethod.java Fri Feb 05 23:31:09 2016 -0800 5.3 @@ -877,11 +877,9 @@ 5.4 */ 5.5 private JCExpression expressionInvoke(VarSymbol rcvr) { 5.6 JCExpression qualifier = 5.7 - tree.sym.isStatic() ? 5.8 - make.Type(tree.sym.owner.type) : 5.9 - (rcvr != null) ? 5.10 - makeReceiver(rcvr) : 5.11 - tree.getQualifierExpression(); 5.12 + (rcvr != null) ? 5.13 + makeReceiver(rcvr) : 5.14 + tree.getQualifierExpression(); 5.15 5.16 //create the qualifier expression 5.17 JCFieldAccess select = make.Select(qualifier, tree.sym.name);
6.1 --- a/src/share/classes/com/sun/tools/javac/comp/Resolve.java Tue Jan 26 11:35:08 2016 -0800 6.2 +++ b/src/share/classes/com/sun/tools/javac/comp/Resolve.java Fri Feb 05 23:31:09 2016 -0800 6.3 @@ -717,7 +717,8 @@ 6.4 Warner warn) { 6.5 //should we expand formals? 6.6 boolean useVarargs = deferredAttrContext.phase.isVarargsRequired(); 6.7 - List<JCExpression> trees = TreeInfo.args(env.tree); 6.8 + JCTree callTree = treeForDiagnostics(env); 6.9 + List<JCExpression> trees = TreeInfo.args(callTree); 6.10 6.11 //inference context used during this method check 6.12 InferenceContext inferenceContext = deferredAttrContext.inferenceContext; 6.13 @@ -726,7 +727,7 @@ 6.14 6.15 if (varargsFormal == null && 6.16 argtypes.size() != formals.size()) { 6.17 - reportMC(env.tree, MethodCheckDiag.ARITY_MISMATCH, inferenceContext); // not enough args 6.18 + reportMC(callTree, MethodCheckDiag.ARITY_MISMATCH, inferenceContext); // not enough args 6.19 } 6.20 6.21 while (argtypes.nonEmpty() && formals.head != varargsFormal) { 6.22 @@ -738,7 +739,7 @@ 6.23 } 6.24 6.25 if (formals.head != varargsFormal) { 6.26 - reportMC(env.tree, MethodCheckDiag.ARITY_MISMATCH, inferenceContext); // not enough args 6.27 + reportMC(callTree, MethodCheckDiag.ARITY_MISMATCH, inferenceContext); // not enough args 6.28 } 6.29 6.30 if (useVarargs) { 6.31 @@ -754,6 +755,11 @@ 6.32 } 6.33 } 6.34 6.35 + // where 6.36 + private JCTree treeForDiagnostics(Env<AttrContext> env) { 6.37 + return env.info.preferredTreeForDiagnostics != null ? env.info.preferredTreeForDiagnostics : env.tree; 6.38 + } 6.39 + 6.40 /** 6.41 * Does the actual argument conforms to the corresponding formal? 6.42 */ 6.43 @@ -1828,17 +1834,23 @@ 6.44 boolean staticOnly = false; 6.45 while (env1.outer != null) { 6.46 if (isStatic(env1)) staticOnly = true; 6.47 - sym = findMethod( 6.48 - env1, env1.enclClass.sym.type, name, argtypes, typeargtypes, 6.49 - allowBoxing, useVarargs, false); 6.50 - if (sym.exists()) { 6.51 - if (staticOnly && 6.52 - sym.kind == MTH && 6.53 - sym.owner.kind == TYP && 6.54 - (sym.flags() & STATIC) == 0) return new StaticError(sym); 6.55 - else return sym; 6.56 - } else if (sym.kind < bestSoFar.kind) { 6.57 - bestSoFar = sym; 6.58 + Assert.check(env1.info.preferredTreeForDiagnostics == null); 6.59 + env1.info.preferredTreeForDiagnostics = env.tree; 6.60 + try { 6.61 + sym = findMethod( 6.62 + env1, env1.enclClass.sym.type, name, argtypes, typeargtypes, 6.63 + allowBoxing, useVarargs, false); 6.64 + if (sym.exists()) { 6.65 + if (staticOnly && 6.66 + sym.kind == MTH && 6.67 + sym.owner.kind == TYP && 6.68 + (sym.flags() & STATIC) == 0) return new StaticError(sym); 6.69 + else return sym; 6.70 + } else if (sym.kind < bestSoFar.kind) { 6.71 + bestSoFar = sym; 6.72 + } 6.73 + } finally { 6.74 + env1.info.preferredTreeForDiagnostics = null; 6.75 } 6.76 if ((env1.enclClass.sym.flags() & STATIC) != 0) staticOnly = true; 6.77 env1 = env1.outer; 6.78 @@ -2466,7 +2478,9 @@ 6.79 return spMethod; 6.80 } 6.81 }; 6.82 - polymorphicSignatureScope.enter(msym); 6.83 + if (!mtype.isErroneous()) { // Cache only if kosher. 6.84 + polymorphicSignatureScope.enter(msym); 6.85 + } 6.86 return msym; 6.87 } 6.88 6.89 @@ -4214,7 +4228,11 @@ 6.90 DiagnosticPosition preferedPos, DiagnosticSource preferredSource, 6.91 DiagnosticType preferredKind, JCDiagnostic d) { 6.92 JCDiagnostic cause = (JCDiagnostic)d.getArgs()[0]; 6.93 - return diags.create(preferredKind, preferredSource, d.getDiagnosticPosition(), 6.94 + DiagnosticPosition pos = d.getDiagnosticPosition(); 6.95 + if (pos == null) { 6.96 + pos = preferedPos; 6.97 + } 6.98 + return diags.create(preferredKind, preferredSource, pos, 6.99 "prob.found.req", cause); 6.100 } 6.101 });
7.1 --- a/src/share/classes/com/sun/tools/javac/jvm/Gen.java Tue Jan 26 11:35:08 2016 -0800 7.2 +++ b/src/share/classes/com/sun/tools/javac/jvm/Gen.java Fri Feb 05 23:31:09 2016 -0800 7.3 @@ -1793,6 +1793,11 @@ 7.4 public void visitReturn(JCReturn tree) { 7.5 int limit = code.nextreg; 7.6 final Env<GenContext> targetEnv; 7.7 + 7.8 + /* Save and then restore the location of the return in case a finally 7.9 + * is expanded (with unwind()) in the middle of our bytecodes. 7.10 + */ 7.11 + int tmpPos = code.pendingStatPos; 7.12 if (tree.expr != null) { 7.13 Item r = genExpr(tree.expr, pt).load(); 7.14 if (hasFinally(env.enclMethod, env)) { 7.15 @@ -1800,17 +1805,10 @@ 7.16 r.store(); 7.17 } 7.18 targetEnv = unwind(env.enclMethod, env); 7.19 + code.pendingStatPos = tmpPos; 7.20 r.load(); 7.21 code.emitop0(ireturn + Code.truncate(Code.typecode(pt))); 7.22 } else { 7.23 - /* If we have a statement like: 7.24 - * 7.25 - * return; 7.26 - * 7.27 - * we need to store the code.pendingStatPos value before generating 7.28 - * the finalizer. 7.29 - */ 7.30 - int tmpPos = code.pendingStatPos; 7.31 targetEnv = unwind(env.enclMethod, env); 7.32 code.pendingStatPos = tmpPos; 7.33 code.emitop0(return_);
8.1 --- a/src/share/classes/com/sun/tools/javac/parser/JavacParser.java Tue Jan 26 11:35:08 2016 -0800 8.2 +++ b/src/share/classes/com/sun/tools/javac/parser/JavacParser.java Fri Feb 05 23:31:09 2016 -0800 8.3 @@ -515,7 +515,7 @@ 8.4 if (mods != 0) { 8.5 long lowestMod = mods & -mods; 8.6 error(token.pos, "mod.not.allowed.here", 8.7 - Flags.asFlagSet(lowestMod)); 8.8 + Flags.asFlagSet(lowestMod)); 8.9 } 8.10 } 8.11 8.12 @@ -954,10 +954,7 @@ 8.13 t = odStack[0]; 8.14 8.15 if (t.hasTag(JCTree.Tag.PLUS)) { 8.16 - StringBuilder buf = foldStrings(t); 8.17 - if (buf != null) { 8.18 - t = toP(F.at(startPos).Literal(TypeTag.CLASS, buf.toString())); 8.19 - } 8.20 + t = foldStrings(t); 8.21 } 8.22 8.23 odStackSupply.add(odStack); 8.24 @@ -981,37 +978,79 @@ 8.25 /** If tree is a concatenation of string literals, replace it 8.26 * by a single literal representing the concatenated string. 8.27 */ 8.28 - protected StringBuilder foldStrings(JCTree tree) { 8.29 + protected JCExpression foldStrings(JCExpression tree) { 8.30 if (!allowStringFolding) 8.31 - return null; 8.32 - List<String> buf = List.nil(); 8.33 + return tree; 8.34 + ListBuffer<JCExpression> opStack = new ListBuffer<>(); 8.35 + ListBuffer<JCLiteral> litBuf = new ListBuffer<>(); 8.36 + boolean needsFolding = false; 8.37 + JCExpression curr = tree; 8.38 while (true) { 8.39 - if (tree.hasTag(LITERAL)) { 8.40 - JCLiteral lit = (JCLiteral) tree; 8.41 - if (lit.typetag == TypeTag.CLASS) { 8.42 - StringBuilder sbuf = 8.43 - new StringBuilder((String)lit.value); 8.44 - while (buf.nonEmpty()) { 8.45 - sbuf.append(buf.head); 8.46 - buf = buf.tail; 8.47 - } 8.48 - return sbuf; 8.49 - } 8.50 - } else if (tree.hasTag(JCTree.Tag.PLUS)) { 8.51 - JCBinary op = (JCBinary)tree; 8.52 - if (op.rhs.hasTag(LITERAL)) { 8.53 - JCLiteral lit = (JCLiteral) op.rhs; 8.54 - if (lit.typetag == TypeTag.CLASS) { 8.55 - buf = buf.prepend((String) lit.value); 8.56 - tree = op.lhs; 8.57 - continue; 8.58 - } 8.59 - } 8.60 + if (curr.hasTag(JCTree.Tag.PLUS)) { 8.61 + JCBinary op = (JCBinary)curr; 8.62 + needsFolding |= foldIfNeeded(op.rhs, litBuf, opStack, false); 8.63 + curr = op.lhs; 8.64 + } else { 8.65 + needsFolding |= foldIfNeeded(curr, litBuf, opStack, true); 8.66 + break; //last one! 8.67 } 8.68 - return null; 8.69 + } 8.70 + if (needsFolding) { 8.71 + List<JCExpression> ops = opStack.toList(); 8.72 + JCExpression res = ops.head; 8.73 + for (JCExpression op : ops.tail) { 8.74 + res = F.at(op.getStartPosition()).Binary(optag(TokenKind.PLUS), res, op); 8.75 + storeEnd(res, getEndPos(op)); 8.76 + } 8.77 + return res; 8.78 + } else { 8.79 + return tree; 8.80 } 8.81 } 8.82 8.83 + private boolean foldIfNeeded(JCExpression tree, ListBuffer<JCLiteral> litBuf, 8.84 + ListBuffer<JCExpression> opStack, boolean last) { 8.85 + JCLiteral str = stringLiteral(tree); 8.86 + if (str != null) { 8.87 + litBuf.prepend(str); 8.88 + return last && merge(litBuf, opStack); 8.89 + } else { 8.90 + boolean res = merge(litBuf, opStack); 8.91 + litBuf.clear(); 8.92 + opStack.prepend(tree); 8.93 + return res; 8.94 + } 8.95 + } 8.96 + 8.97 + boolean merge(ListBuffer<JCLiteral> litBuf, ListBuffer<JCExpression> opStack) { 8.98 + if (litBuf.isEmpty()) { 8.99 + return false; 8.100 + } else if (litBuf.size() == 1) { 8.101 + opStack.prepend(litBuf.first()); 8.102 + return false; 8.103 + } else { 8.104 + StringBuilder sb = new StringBuilder(); 8.105 + for (JCLiteral lit : litBuf) { 8.106 + sb.append(lit.getValue()); 8.107 + } 8.108 + JCExpression t = F.at(litBuf.first().getStartPosition()).Literal(TypeTag.CLASS, sb.toString()); 8.109 + storeEnd(t, litBuf.last().getEndPosition(endPosTable)); 8.110 + opStack.prepend(t); 8.111 + return true; 8.112 + } 8.113 + } 8.114 + 8.115 + private JCLiteral stringLiteral(JCTree tree) { 8.116 + if (tree.hasTag(LITERAL)) { 8.117 + JCLiteral lit = (JCLiteral)tree; 8.118 + if (lit.typetag == TypeTag.CLASS) { 8.119 + return lit; 8.120 + } 8.121 + } 8.122 + return null; 8.123 + } 8.124 + 8.125 + 8.126 /** optimization: To save allocating a new operand/operator stack 8.127 * for every binary operation, we use supplys. 8.128 */
9.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 9.2 +++ b/test/tools/javac/diags/DiagnosticRewriterTest.java Fri Feb 05 23:31:09 2016 -0800 9.3 @@ -0,0 +1,18 @@ 9.4 +/* 9.5 + * @test /nodynamiccopyright/ 9.6 + * @bug 8145466 8146533 9.7 + * @summary javac: No line numbers in compilation error 9.8 + * @compile/fail/ref=DiagnosticRewriterTest.out -Xdiags:compact -XDrawDiagnostics DiagnosticRewriterTest.java 9.9 + */ 9.10 + 9.11 +class DiagnosticRewriterTest { 9.12 + void test() { 9.13 + new Object() { 9.14 + void g() { 9.15 + m(2L); 9.16 + } 9.17 + }; 9.18 + } 9.19 + 9.20 + void m(int i) { } 9.21 +}
10.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 10.2 +++ b/test/tools/javac/diags/DiagnosticRewriterTest.out Fri Feb 05 23:31:09 2016 -0800 10.3 @@ -0,0 +1,3 @@ 10.4 +DiagnosticRewriterTest.java:12:15: compiler.err.prob.found.req: (compiler.misc.possible.loss.of.precision: long, int) 10.5 +- compiler.note.compressed.diags 10.6 +1 error
11.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 11.2 +++ b/test/tools/javac/diags/DiagnosticRewriterTest2.java Fri Feb 05 23:31:09 2016 -0800 11.3 @@ -0,0 +1,22 @@ 11.4 +/* 11.5 + * @test /nodynamiccopyright/ 11.6 + * @bug 8145466 8146533 11.7 + * @summary javac: No line numbers in compilation error 11.8 + * @compile/fail/ref=DiagnosticRewriterTest2.out -Xdiags:compact -XDrawDiagnostics DiagnosticRewriterTest2.java 11.9 + */ 11.10 + 11.11 +class DiagnosticRewriterTest2 { 11.12 + class Bar { 11.13 + Bar(Object o) { } 11.14 + } 11.15 + void test() { 11.16 + new Bar(null) { 11.17 + void g() { 11.18 + m(2L); 11.19 + m(); 11.20 + } 11.21 + }; 11.22 + } 11.23 + 11.24 + void m(int i) { } 11.25 +}
12.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 12.2 +++ b/test/tools/javac/diags/DiagnosticRewriterTest2.out Fri Feb 05 23:31:09 2016 -0800 12.3 @@ -0,0 +1,4 @@ 12.4 +DiagnosticRewriterTest2.java:15:15: compiler.err.prob.found.req: (compiler.misc.possible.loss.of.precision: long, int) 12.5 +DiagnosticRewriterTest2.java:16:13: compiler.err.cant.apply.symbol: kindname.method, m, int, compiler.misc.no.args, kindname.class, DiagnosticRewriterTest2, (compiler.misc.arg.length.mismatch) 12.6 +- compiler.note.compressed.diags 12.7 +2 errors
13.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 13.2 +++ b/test/tools/javac/generics/diamond/8065986/T8065986a.java Fri Feb 05 23:31:09 2016 -0800 13.3 @@ -0,0 +1,33 @@ 13.4 +/* 13.5 + * @test /nodynamiccopyright/ 13.6 + * @bug 8065986 13.7 + * 13.8 + * @summary Compiler fails to NullPointerException when calling super with Object<>() 13.9 + * @compile/fail/ref=T8065986a.out T8065986a.java -XDrawDiagnostics 13.10 + * 13.11 + */ 13.12 +import java.util.ArrayList; 13.13 + 13.14 +class T8065986a { 13.15 + T8065986a() { 13.16 + super(new Object<>()); 13.17 + } 13.18 + 13.19 + T8065986a(boolean b) { 13.20 + super(new ArrayList<>()); 13.21 + } 13.22 + 13.23 + T8065986a(boolean b1, boolean b2) { 13.24 + super(()->{}); 13.25 + } 13.26 + 13.27 + T8065986a(boolean b1, boolean b2, boolean b3) { 13.28 + super(T8065986a::m); 13.29 + } 13.30 + 13.31 + T8065986a(boolean cond, Object o1, Object o2) { 13.32 + super(cond ? o1 : o2); 13.33 + } 13.34 + 13.35 + static void m() { } 13.36 +}
14.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 14.2 +++ b/test/tools/javac/generics/diamond/8065986/T8065986a.out Fri Feb 05 23:31:09 2016 -0800 14.3 @@ -0,0 +1,6 @@ 14.4 +T8065986a.java:13:25: compiler.err.cant.apply.diamond.1: java.lang.Object, (compiler.misc.diamond.non.generic: java.lang.Object) 14.5 +T8065986a.java:17:9: compiler.err.cant.apply.symbol: kindname.constructor, Object, compiler.misc.no.args, java.util.ArrayList<java.lang.Object>, kindname.class, java.lang.Object, (compiler.misc.arg.length.mismatch) 14.6 +T8065986a.java:21:9: compiler.err.cant.apply.symbol: kindname.constructor, Object, compiler.misc.no.args, @438, kindname.class, java.lang.Object, (compiler.misc.arg.length.mismatch) 14.7 +T8065986a.java:25:9: compiler.err.cant.apply.symbol: kindname.constructor, Object, compiler.misc.no.args, @520, kindname.class, java.lang.Object, (compiler.misc.arg.length.mismatch) 14.8 +T8065986a.java:29:9: compiler.err.cant.apply.symbol: kindname.constructor, Object, compiler.misc.no.args, @608, kindname.class, java.lang.Object, (compiler.misc.arg.length.mismatch) 14.9 +5 errors
15.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 15.2 +++ b/test/tools/javac/generics/diamond/8065986/T8065986b.java Fri Feb 05 23:31:09 2016 -0800 15.3 @@ -0,0 +1,33 @@ 15.4 +/* 15.5 + * @test /nodynamiccopyright/ 15.6 + * @bug 8065986 15.7 + * 15.8 + * @summary Compiler fails to NullPointerException when calling super with Object<>() 15.9 + * @compile/fail/ref=T8065986b.out T8065986b.java -XDrawDiagnostics 15.10 + * 15.11 + */ 15.12 +import java.util.ArrayList; 15.13 + 15.14 +class T8065986b { 15.15 + T8065986b() { 15.16 + this(new Object<>()); 15.17 + } 15.18 + 15.19 + T8065986b(boolean b) { 15.20 + this(new ArrayList<>()); 15.21 + } 15.22 + 15.23 + T8065986b(boolean b1, boolean b2) { 15.24 + this(()->{}); 15.25 + } 15.26 + 15.27 + T8065986b(boolean b1, boolean b2, boolean b3) { 15.28 + this(T8065986b::m); 15.29 + } 15.30 + 15.31 + T8065986b(boolean cond, Object o1, Object o2) { 15.32 + this(cond ? o1 : o2); 15.33 + } 15.34 + 15.35 + static void m() { } 15.36 +}
16.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 16.2 +++ b/test/tools/javac/generics/diamond/8065986/T8065986b.out Fri Feb 05 23:31:09 2016 -0800 16.3 @@ -0,0 +1,6 @@ 16.4 +T8065986b.java:13:24: compiler.err.cant.apply.diamond.1: java.lang.Object, (compiler.misc.diamond.non.generic: java.lang.Object) 16.5 +T8065986b.java:17:9: compiler.err.cant.apply.symbols: kindname.constructor, T8065986b, java.util.ArrayList<java.lang.Object>,{(compiler.misc.inapplicable.method: kindname.constructor, T8065986b, T8065986b(), (compiler.misc.arg.length.mismatch)),(compiler.misc.inapplicable.method: kindname.constructor, T8065986b, T8065986b(boolean), (compiler.misc.no.conforming.assignment.exists: (compiler.misc.cant.apply.diamond.1: (compiler.misc.diamond: java.util.ArrayList), (compiler.misc.infer.no.conforming.instance.exists: E, java.util.ArrayList<E>, boolean)))),(compiler.misc.inapplicable.method: kindname.constructor, T8065986b, T8065986b(boolean,boolean), (compiler.misc.arg.length.mismatch)),(compiler.misc.inapplicable.method: kindname.constructor, T8065986b, T8065986b(boolean,boolean,boolean), (compiler.misc.arg.length.mismatch)),(compiler.misc.inapplicable.method: kindname.constructor, T8065986b, T8065986b(boolean,java.lang.Object,java.lang.Object), (compiler.misc.arg.length.mismatch))} 16.6 +T8065986b.java:21:9: compiler.err.cant.apply.symbols: kindname.constructor, T8065986b, @435,{(compiler.misc.inapplicable.method: kindname.constructor, T8065986b, T8065986b(), (compiler.misc.arg.length.mismatch)),(compiler.misc.inapplicable.method: kindname.constructor, T8065986b, T8065986b(boolean), (compiler.misc.no.conforming.assignment.exists: (compiler.misc.not.a.functional.intf: boolean))),(compiler.misc.inapplicable.method: kindname.constructor, T8065986b, T8065986b(boolean,boolean), (compiler.misc.arg.length.mismatch)),(compiler.misc.inapplicable.method: kindname.constructor, T8065986b, T8065986b(boolean,boolean,boolean), (compiler.misc.arg.length.mismatch)),(compiler.misc.inapplicable.method: kindname.constructor, T8065986b, T8065986b(boolean,java.lang.Object,java.lang.Object), (compiler.misc.arg.length.mismatch))} 16.7 +T8065986b.java:25:9: compiler.err.cant.apply.symbols: kindname.constructor, T8065986b, @516,{(compiler.misc.inapplicable.method: kindname.constructor, T8065986b, T8065986b(), (compiler.misc.arg.length.mismatch)),(compiler.misc.inapplicable.method: kindname.constructor, T8065986b, T8065986b(boolean), (compiler.misc.no.conforming.assignment.exists: (compiler.misc.not.a.functional.intf: boolean))),(compiler.misc.inapplicable.method: kindname.constructor, T8065986b, T8065986b(boolean,boolean), (compiler.misc.arg.length.mismatch)),(compiler.misc.inapplicable.method: kindname.constructor, T8065986b, T8065986b(boolean,boolean,boolean), (compiler.misc.arg.length.mismatch)),(compiler.misc.inapplicable.method: kindname.constructor, T8065986b, T8065986b(boolean,java.lang.Object,java.lang.Object), (compiler.misc.arg.length.mismatch))} 16.8 +T8065986b.java:29:9: compiler.err.cant.apply.symbols: kindname.constructor, T8065986b, @603,{(compiler.misc.inapplicable.method: kindname.constructor, T8065986b, T8065986b(), (compiler.misc.arg.length.mismatch)),(compiler.misc.inapplicable.method: kindname.constructor, T8065986b, T8065986b(boolean), (compiler.misc.no.conforming.assignment.exists: (compiler.misc.incompatible.type.in.conditional: (compiler.misc.inconvertible.types: java.lang.Object, boolean)))),(compiler.misc.inapplicable.method: kindname.constructor, T8065986b, T8065986b(boolean,boolean), (compiler.misc.arg.length.mismatch)),(compiler.misc.inapplicable.method: kindname.constructor, T8065986b, T8065986b(boolean,boolean,boolean), (compiler.misc.arg.length.mismatch)),(compiler.misc.inapplicable.method: kindname.constructor, T8065986b, T8065986b(boolean,java.lang.Object,java.lang.Object), (compiler.misc.arg.length.mismatch))} 16.9 +5 errors
17.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 17.2 +++ b/test/tools/javac/lambda/8066974/T8066974.java Fri Feb 05 23:31:09 2016 -0800 17.3 @@ -0,0 +1,44 @@ 17.4 +/* 17.5 + * @test /nodynamiccopyright/ 17.6 + * @bug 8066974 17.7 + * @summary Compiler doesn't infer method's generic type information in lambda body 17.8 + * @compile/fail/ref=T8066974.out -XDrawDiagnostics T8066974.java 17.9 + */ 17.10 +class T8066974 { 17.11 + static class Throwing<E extends Throwable> { } 17.12 + static class RuntimeThrowing extends Throwing<RuntimeException> { } 17.13 + static class CheckedThrowing extends Throwing<Exception> { } 17.14 + 17.15 + interface Parameter { 17.16 + <E extends Throwable> Object m(Throwing<E> tw) throws E; 17.17 + } 17.18 + 17.19 + interface Mapper<R> { 17.20 + R m(Parameter p); 17.21 + } 17.22 + 17.23 + <Z> Z map(Mapper<Z> mz) { return null; } 17.24 + 17.25 + <Z extends Throwable> Mapper<Throwing<Z>> mapper(Throwing<Z> tz) throws Z { return null; } 17.26 + 17.27 + static class ThrowingMapper<X extends Throwable> implements Mapper<Throwing<X>> { 17.28 + ThrowingMapper(Throwing<X> arg) throws X { } 17.29 + 17.30 + @Override 17.31 + public Throwing<X> m(Parameter p) { 17.32 + return null; 17.33 + } 17.34 + } 17.35 + 17.36 + void testRuntime(RuntimeThrowing rt) { 17.37 + map(p->p.m(rt)); 17.38 + map(mapper(rt)); 17.39 + map(new ThrowingMapper<>(rt)); 17.40 + } 17.41 + 17.42 + void testChecked(CheckedThrowing ct) { 17.43 + map(p->p.m(ct)); 17.44 + map(mapper(ct)); 17.45 + map(new ThrowingMapper<>(ct)); 17.46 + } 17.47 +}
18.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 18.2 +++ b/test/tools/javac/lambda/8066974/T8066974.out Fri Feb 05 23:31:09 2016 -0800 18.3 @@ -0,0 +1,4 @@ 18.4 +T8066974.java:40:19: compiler.err.unreported.exception.need.to.catch.or.throw: java.lang.Exception 18.5 +T8066974.java:41:19: compiler.err.unreported.exception.need.to.catch.or.throw: java.lang.Exception 18.6 +T8066974.java:42:13: compiler.err.unreported.exception.need.to.catch.or.throw: java.lang.Exception 18.7 +3 errors
19.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 19.2 +++ b/test/tools/javac/lambda/MethodHandleInvokeTest.java Fri Feb 05 23:31:09 2016 -0800 19.3 @@ -0,0 +1,49 @@ 19.4 +/* 19.5 + * Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved. 19.6 + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 19.7 + * 19.8 + * This code is free software; you can redistribute it and/or modify it 19.9 + * under the terms of the GNU General Public License version 2 only, as 19.10 + * published by the Free Software Foundation. 19.11 + * 19.12 + * This code is distributed in the hope that it will be useful, but WITHOUT 19.13 + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 19.14 + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 19.15 + * version 2 for more details (a copy is included in the LICENSE file that 19.16 + * accompanied this code). 19.17 + * 19.18 + * You should have received a copy of the GNU General Public License version 19.19 + * 2 along with this work; if not, write to the Free Software Foundation, 19.20 + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 19.21 + * 19.22 + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 19.23 + * or visit www.oracle.com if you need additional information or have any 19.24 + * questions. 19.25 + */ 19.26 + 19.27 +/* 19.28 + * @test 19.29 + * @bug 8130506 8147530 19.30 + * @summary javac AssertionError when invoking MethodHandle.invoke with lambda parameter 19.31 + * @run main MethodHandleInvokeTest 19.32 + */ 19.33 + 19.34 +import java.lang.invoke.MethodHandle; 19.35 + 19.36 +public class MethodHandleInvokeTest { 19.37 + 19.38 + private static interface Obj2Obj { 19.39 + Object run(Object obj) throws Throwable; 19.40 + } 19.41 + 19.42 + private static void m(Obj2Obj param) { 19.43 + } 19.44 + 19.45 + public static void main(String[] args) { 19.46 + m((obj) -> { 19.47 + MethodHandle mhandle = null; 19.48 + mhandle.invoke(obj); 19.49 + return null; 19.50 + }); 19.51 + } 19.52 +}
20.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 20.2 +++ b/test/tools/javac/lambda/methodReferenceExecution/MethodReferencePackagePrivateQualifier.java Fri Feb 05 23:31:09 2016 -0800 20.3 @@ -0,0 +1,42 @@ 20.4 +/* 20.5 + * Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved. 20.6 + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 20.7 + * 20.8 + * This code is free software; you can redistribute it and/or modify it 20.9 + * under the terms of the GNU General Public License version 2 only, as 20.10 + * published by the Free Software Foundation. 20.11 + * 20.12 + * This code is distributed in the hope that it will be useful, but WITHOUT 20.13 + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 20.14 + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 20.15 + * version 2 for more details (a copy is included in the LICENSE file that 20.16 + * accompanied this code). 20.17 + * 20.18 + * You should have received a copy of the GNU General Public License version 20.19 + * 2 along with this work; if not, write to the Free Software Foundation, 20.20 + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 20.21 + * 20.22 + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 20.23 + * or visit www.oracle.com if you need additional information or have any 20.24 + * questions. 20.25 + */ 20.26 + 20.27 +/** 20.28 + * @test 20.29 + * @bug 8068254 20.30 + * @summary Method reference uses wrong qualifying type 20.31 + * @author srikanth 20.32 + * @run main MethodReferencePackagePrivateQualifier 20.33 + */ 20.34 +import pkg.B; 20.35 +public class MethodReferencePackagePrivateQualifier { 20.36 + public static void main(String... args) { 20.37 + pkg.B.m(); 20.38 + Runnable r = pkg.B::m; 20.39 + r.run(); 20.40 + r = B::m; 20.41 + r.run(); 20.42 + if (!pkg.B.result.equals("A.m()A.m()A.m()")) 20.43 + throw new AssertionError("Incorrect result"); 20.44 + } 20.45 +}
21.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 21.2 +++ b/test/tools/javac/lambda/methodReferenceExecution/pkg/B.java Fri Feb 05 23:31:09 2016 -0800 21.3 @@ -0,0 +1,33 @@ 21.4 +/* 21.5 + * Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved. 21.6 + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 21.7 + * 21.8 + * This code is free software; you can redistribute it and/or modify it 21.9 + * under the terms of the GNU General Public License version 2 only, as 21.10 + * published by the Free Software Foundation. 21.11 + * 21.12 + * This code is distributed in the hope that it will be useful, but WITHOUT 21.13 + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 21.14 + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 21.15 + * version 2 for more details (a copy is included in the LICENSE file that 21.16 + * accompanied this code). 21.17 + * 21.18 + * You should have received a copy of the GNU General Public License version 21.19 + * 2 along with this work; if not, write to the Free Software Foundation, 21.20 + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 21.21 + * 21.22 + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 21.23 + * or visit www.oracle.com if you need additional information or have any 21.24 + * questions. 21.25 + */ 21.26 + 21.27 +package pkg; 21.28 +class A { 21.29 + public static void m() { 21.30 + B.result += "A.m()"; 21.31 + } 21.32 +} 21.33 + 21.34 +public class B extends A { 21.35 + public static String result = ""; 21.36 +}
22.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 22.2 +++ b/test/tools/javac/linenumbers/FinallyLineNumberTest.java Fri Feb 05 23:31:09 2016 -0800 22.3 @@ -0,0 +1,108 @@ 22.4 +/* 22.5 + * Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved. 22.6 + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 22.7 + * 22.8 + * This code is free software; you can redistribute it and/or modify it 22.9 + * under the terms of the GNU General Public License version 2 only, as 22.10 + * published by the Free Software Foundation. 22.11 + * 22.12 + * This code is distributed in the hope that it will be useful, but WITHOUT 22.13 + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 22.14 + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 22.15 + * version 2 for more details (a copy is included in the LICENSE file that 22.16 + * accompanied this code). 22.17 + * 22.18 + * You should have received a copy of the GNU General Public License version 22.19 + * 2 along with this work; if not, write to the Free Software Foundation, 22.20 + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 22.21 + * 22.22 + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 22.23 + * or visit www.oracle.com if you need additional information or have any 22.24 + * questions. 22.25 + */ 22.26 + 22.27 +/* 22.28 + * @test 22.29 + * @bug 8134759 22.30 + * @summary Add LineNumberTable attribute for return bytecodes split around finally code 22.31 + * @modules jdk.jdeps/com.sun.tools.classfile 22.32 + */ 22.33 + 22.34 +import com.sun.tools.classfile.ClassFile; 22.35 +import com.sun.tools.classfile.ConstantPoolException; 22.36 +import com.sun.tools.classfile.Method; 22.37 +import com.sun.tools.classfile.Attribute; 22.38 +import com.sun.tools.classfile.Code_attribute; 22.39 +import com.sun.tools.classfile.LineNumberTable_attribute; 22.40 +import com.sun.tools.classfile.LineNumberTable_attribute.Entry; 22.41 + 22.42 +import java.io.File; 22.43 +import java.io.IOException; 22.44 + 22.45 +public class FinallyLineNumberTest { 22.46 + public static void main(String[] args) throws Exception { 22.47 + // check that we have 5 consecutive entries for method() 22.48 + Entry[] lines = findEntries(); 22.49 + if (lines == null) { 22.50 + throw new Exception("finally line number table could not be loaded"); 22.51 + } 22.52 + if (lines.length != 4) { 22.53 + // Help debug 22.54 + System.err.println("LineTable error, got lines:"); 22.55 + for (Entry e : lines) { 22.56 + System.err.println(e.line_number); 22.57 + } 22.58 + throw new Exception("finally line number table incorrect: length=" + lines.length + " expected length=4"); 22.59 + } 22.60 + 22.61 + // return null line, for the load null operation 22.62 + int current = lines[0].line_number; 22.63 + int first = current; 22.64 + 22.65 + // finally line 22.66 + current = lines[1].line_number; 22.67 + if (current != first + 2) { 22.68 + throw new Exception("finally line number table incorrect: got=" + current + " expected=" + (first + 2)); 22.69 + } 22.70 + 22.71 + // return null line, for the return operation 22.72 + current = lines[2].line_number; 22.73 + if (current != first) { 22.74 + throw new Exception("finally line number table incorrect: got=" + current + " expected=" + first); 22.75 + } 22.76 + 22.77 + // finally line, for when exception is thrown 22.78 + current = lines[3].line_number; 22.79 + if (current != first + 2) { 22.80 + throw new Exception("finally line number table incorrect: got=" + current + " expected=" + (first + 2)); 22.81 + } 22.82 + } 22.83 + 22.84 + static Entry[] findEntries() throws IOException, ConstantPoolException { 22.85 + ClassFile self = ClassFile.read(FinallyLineNumberTest.class.getResourceAsStream("FinallyLineNumberTest.class")); 22.86 + for (Method m : self.methods) { 22.87 + if ("method".equals(m.getName(self.constant_pool))) { 22.88 + Code_attribute code_attribute = (Code_attribute)m.attributes.get(Attribute.Code); 22.89 + for (Attribute at : code_attribute.attributes) { 22.90 + if (Attribute.LineNumberTable.equals(at.getName(self.constant_pool))) { 22.91 + return ((LineNumberTable_attribute)at).line_number_table; 22.92 + } 22.93 + } 22.94 + } 22.95 + } 22.96 + return null; 22.97 + } 22.98 + 22.99 + // This method should get LineNumberTable entries for: 22.100 + // *) The load of the null 22.101 + // *) The finally code for when an exception is *not* thrown 22.102 + // *) The actual return, which should have the same line as the load of the null 22.103 + // *) The finally code for when an exception *is* thrown, should have the same line as above finally code 22.104 + public static String method(int field) { 22.105 + try { 22.106 + return null; 22.107 + } finally { 22.108 + field+=1; // Dummy 22.109 + } 22.110 + } 22.111 +}
23.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 23.2 +++ b/test/tools/javac/parser/8134007/T8134007.java Fri Feb 05 23:31:09 2016 -0800 23.3 @@ -0,0 +1,488 @@ 23.4 +/* 23.5 + * Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved. 23.6 + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 23.7 + * 23.8 + * This code is free software; you can redistribute it and/or modify it 23.9 + * under the terms of the GNU General Public License version 2 only, as 23.10 + * published by the Free Software Foundation. 23.11 + * 23.12 + * This code is distributed in the hope that it will be useful, but WITHOUT 23.13 + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 23.14 + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 23.15 + * version 2 for more details (a copy is included in the LICENSE file that 23.16 + * accompanied this code). 23.17 + * 23.18 + * You should have received a copy of the GNU General Public License version 23.19 + * 2 along with this work; if not, write to the Free Software Foundation, 23.20 + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 23.21 + * 23.22 + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 23.23 + * or visit www.oracle.com if you need additional information or have any 23.24 + * questions. 23.25 + */ 23.26 + 23.27 +/* 23.28 + * @test 23.29 + * @bug 8134007 23.30 + * @summary Improve string folding 23.31 + * @compile T8134007.java 23.32 + */ 23.33 +class T8134007 { 23.34 + String v = ""; 23.35 + 23.36 + //interleaved non-literals 23.37 + String s1 = "Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" + v 23.38 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" + v 23.39 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" + v 23.40 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" + v 23.41 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" + v 23.42 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" + v 23.43 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" + v 23.44 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" + v 23.45 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" + v 23.46 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" + v 23.47 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" + v 23.48 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" + v 23.49 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" + v 23.50 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" + v 23.51 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" + v 23.52 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" + v 23.53 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" + v 23.54 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" + v 23.55 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" + v 23.56 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" + v 23.57 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" + v 23.58 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" + v 23.59 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" + v 23.60 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" + v 23.61 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" + v 23.62 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" + v 23.63 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" + v 23.64 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" + v 23.65 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" + v 23.66 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" + v 23.67 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" + v 23.68 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" + v 23.69 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" + v 23.70 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" + v 23.71 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" + v 23.72 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" + v 23.73 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" + v 23.74 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" + v 23.75 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" + v 23.76 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" + v 23.77 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" + v 23.78 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" + v 23.79 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" + v 23.80 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" + v 23.81 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" + v 23.82 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" + v 23.83 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" + v 23.84 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" + v 23.85 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" + v 23.86 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" + v 23.87 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" + v 23.88 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" + v 23.89 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" + v 23.90 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" + v 23.91 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" + v 23.92 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" + v 23.93 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" + v 23.94 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" + v 23.95 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" + v 23.96 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" + v 23.97 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" + v 23.98 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" + v 23.99 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" + v 23.100 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" + v 23.101 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" + v 23.102 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" + v 23.103 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" + v 23.104 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" + v 23.105 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" + v 23.106 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" + v 23.107 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" + v 23.108 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" + v 23.109 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" + v 23.110 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" + v 23.111 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" + v 23.112 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" + v 23.113 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" + v 23.114 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" + v 23.115 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" + v 23.116 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" + v 23.117 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" + v 23.118 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" + v 23.119 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" + v 23.120 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" + v 23.121 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" + v 23.122 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" + v 23.123 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" + v 23.124 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" + v 23.125 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" + v 23.126 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" + v 23.127 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" + v 23.128 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" + v 23.129 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" + v 23.130 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" + v 23.131 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" + v 23.132 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" + v 23.133 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" + v 23.134 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" + v 23.135 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" + v 23.136 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" + v 23.137 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" + v 23.138 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" + v 23.139 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" + v 23.140 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" + v 23.141 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" + v 23.142 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" + v 23.143 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" + v 23.144 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" + v 23.145 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" + v 23.146 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" + v 23.147 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" + v 23.148 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" + v 23.149 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" + v 23.150 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" + v 23.151 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" + v 23.152 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" + v 23.153 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" + v 23.154 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" + v 23.155 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" + v 23.156 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" + v 23.157 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" + v 23.158 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" + v 23.159 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" + v 23.160 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" + v 23.161 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" + v 23.162 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" + v 23.163 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" + v 23.164 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" + v 23.165 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" + v 23.166 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" + v 23.167 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" + v 23.168 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" + v 23.169 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" + v 23.170 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" + v 23.171 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" + v 23.172 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" + v 23.173 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" + v 23.174 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" + v 23.175 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" + v 23.176 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" + v 23.177 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" + v 23.178 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" + v 23.179 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" + v 23.180 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" + v 23.181 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" + v 23.182 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" + v 23.183 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" + v 23.184 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" + v 23.185 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" + v 23.186 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" + v; 23.187 + 23.188 + //heading non-literal 23.189 + String s2 = v + "Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.190 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.191 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.192 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.193 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.194 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.195 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.196 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.197 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.198 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.199 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.200 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.201 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.202 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.203 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.204 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.205 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.206 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.207 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.208 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.209 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.210 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.211 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.212 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.213 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.214 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.215 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.216 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.217 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.218 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.219 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.220 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.221 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.222 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.223 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.224 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.225 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.226 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.227 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.228 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.229 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.230 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.231 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.232 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.233 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.234 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.235 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.236 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.237 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.238 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.239 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.240 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.241 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.242 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.243 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.244 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.245 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.246 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.247 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.248 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.249 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.250 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.251 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.252 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.253 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.254 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.255 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.256 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.257 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.258 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.259 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.260 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.261 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.262 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.263 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.264 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.265 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.266 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.267 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.268 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.269 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.270 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.271 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.272 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.273 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.274 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.275 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.276 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.277 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.278 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.279 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.280 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.281 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.282 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.283 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.284 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.285 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.286 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.287 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.288 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.289 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.290 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.291 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.292 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.293 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.294 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.295 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.296 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.297 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.298 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.299 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.300 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.301 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.302 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.303 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.304 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.305 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.306 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.307 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.308 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.309 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.310 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.311 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.312 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.313 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.314 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.315 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.316 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.317 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.318 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.319 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.320 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.321 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.322 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.323 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.324 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.325 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.326 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.327 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.328 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.329 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.330 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.331 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.332 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.333 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.334 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.335 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.336 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.337 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.338 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9"; 23.339 + 23.340 + //trailing non-literal 23.341 + String s3 = "Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.342 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.343 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.344 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.345 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.346 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.347 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.348 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.349 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.350 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.351 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.352 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.353 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.354 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.355 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.356 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.357 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.358 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.359 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.360 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.361 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.362 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.363 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.364 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.365 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.366 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.367 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.368 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.369 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.370 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.371 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.372 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.373 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.374 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.375 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.376 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.377 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.378 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.379 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.380 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.381 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.382 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.383 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.384 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.385 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.386 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.387 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.388 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.389 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.390 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.391 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.392 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.393 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.394 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.395 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.396 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.397 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.398 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.399 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.400 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.401 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.402 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.403 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.404 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.405 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.406 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.407 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.408 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.409 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.410 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.411 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.412 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.413 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.414 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.415 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.416 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.417 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.418 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.419 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.420 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.421 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.422 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.423 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.424 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.425 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.426 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.427 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.428 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.429 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.430 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.431 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.432 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.433 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.434 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.435 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.436 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.437 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.438 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.439 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.440 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.441 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.442 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.443 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.444 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.445 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.446 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.447 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.448 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.449 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.450 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.451 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.452 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.453 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.454 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.455 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.456 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.457 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.458 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.459 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.460 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.461 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.462 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.463 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.464 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.465 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.466 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.467 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.468 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.469 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.470 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.471 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.472 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.473 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.474 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.475 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.476 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.477 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.478 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.479 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.480 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.481 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.482 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.483 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.484 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.485 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.486 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.487 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.488 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.489 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" 23.490 + +"Str0" + "Str1" + "Str2" + "Str3" + "Str4" + "Str5" + "Str6" + "Str7" + "Str8" + "Str9" + v; 23.491 +}
24.1 --- a/test/tools/javac/parser/StringFoldingTest.java Tue Jan 26 11:35:08 2016 -0800 24.2 +++ b/test/tools/javac/parser/StringFoldingTest.java Fri Feb 05 23:31:09 2016 -0800 24.3 @@ -23,7 +23,7 @@ 24.4 24.5 /* 24.6 * @test 24.7 - * @bug 7068902 24.8 + * @bug 7068902 8139751 24.9 * @summary verify that string folding can be enabled or disabled 24.10 */ 24.11 24.12 @@ -85,11 +85,14 @@ 24.13 24.14 if (disableStringFolding) { 24.15 if (text.contains("FOLDED")) { 24.16 - throw new AssertionError("Expected string folding"); 24.17 + throw new AssertionError("Expected no string folding"); 24.18 + } 24.19 + if (!text.contains("\"F\"")) { 24.20 + throw new AssertionError("Expected content not found"); 24.21 } 24.22 } else { 24.23 if (!text.contains("FOLDED")) { 24.24 - throw new AssertionError("Expected no string folding"); 24.25 + throw new AssertionError("Expected string folding"); 24.26 } 24.27 } 24.28 }