/* * Copyright 2013 Google Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy of * the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations under * the License. */ package com.google.gwt.dev.jjs.test; import java.util.ArrayList; /** * A subclass that overrides {@link #method(ArrayList, int)} to see what the values of its own * fields are from within the superclass's cstr (before our own cstr has run). * * See {@link CompilerTest#testFieldInitializationOrder()}. */ class FieldInitOrderChild extends FieldInitOrderBase { private final int i1 = 1; private int i2 = 1; private Integer i3 = new Integer(1); private Integer i4; private final static int i5 = 1; private static int i6 = 1; private static Integer i7 = new Integer(1); FieldInitOrderChild(ArrayList<String> seenValues) { // the superclass calls method(), which will record the pre-cstr value of our fields super(seenValues, 2); recordValues(seenValues); } // invoked by the super classes before our cstr has run @Override void method(ArrayList<String> seenValues, int x) { recordValues(seenValues); // i1 is final i2 = x; i3 = new Integer(x); i4 = new Integer(x); // i5 is final i6 = 2; i7 = new Integer(x); } private void recordValues(ArrayList<String> seenValues) { // i3, i4 and i7 would be directly converted into strings hence show undefined instead of null. // String operations should take care of corner cases where a string is null or undefined // see issue 8257. seenValues.add("i1=" + i1 + ",i2=" + i2 + ",i3=" + (i3 == null ? null : i3) + ",i4=" + (i4 == null ? null : i4) + ",i5=" + i5 + ",i6=" + i6 + ",i7=" + (i7 == null ? null : i7)); } }