Package com.strobel.assembler.metadata

Examples of com.strobel.assembler.metadata.FieldDefinition


    public Void visitFieldDeclaration(final FieldDeclaration node, final Void ignored) {
        startNode(node);
        writeAnnotations(node.getAnnotations(), true);
        writeModifiers(node.getModifiers());

        final FieldDefinition field = node.getUserData(Keys.FIELD_DEFINITION);

        if (field != null && field.isSynthetic()) {
            space(lastWritten != LastWritten.Whitespace);
            formatter.writeComment(CommentType.MultiLine, " synthetic ");
            space();
        }
View Full Code Here


            node.getParent() instanceof VariableInitializer &&
            node.getParent().getParent() instanceof FieldDeclaration &&
            StringUtilities.equals(currentType.getInternalName(), declaringType.getInternalName())) {

            final FieldDeclaration declaration = (FieldDeclaration) node.getParent().getParent();
            final FieldDefinition actualField = declaration.getUserData(Keys.FIELD_DEFINITION);

            if (actualField == null || StringUtilities.equals(actualField.getName(), fieldName)) {
                switch (fieldName) {
                    case "POSITIVE_INFINITY": {
                        node.replaceWith(
                            new BinaryOperatorExpression(
                                new PrimitiveExpression(node.getOffset(), jvmType == JvmType.Double ? 1d : 1f),
View Full Code Here

        return super.visitTypeDeclaration(node, _);
    }

    @Override
    public Void visitFieldDeclaration(final FieldDeclaration node, final Void data) {
        final FieldDefinition field = node.getUserData(Keys.FIELD_DEFINITION);

        if (field != null && AstBuilder.isMemberHidden(field, context)) {
            node.remove();
            return null;
        }
View Full Code Here

    @Override
    public void run(final AstNode compilationUnit) {
        new ContextTrackingVisitor<Void>(context) {
            @Override
            public Void visitFieldDeclaration(final FieldDeclaration node, final Void _) {
                final FieldDefinition field = node.getUserData(Keys.FIELD_DEFINITION);

                if (field != null) {
                    _fieldDeclarations.put(field.getFullName(), node);
                }

                return super.visitFieldDeclaration(node, _);
            }
        }.run(compilationUnit);
View Full Code Here

        final Match match = FIELD_ASSIGNMENT.match(node);

        if (match.success()) {
            final Expression target = (Expression) firstOrDefault(match.get("target"));
            final FieldReference reference = (FieldReference) target.getUserData(Keys.MEMBER_REFERENCE);
            final FieldDefinition definition = reference.resolve();

            //
            // Final fields with constant values area already initialized inline, so any additional assignments
            // are illegal; remove them.
            //
            if (definition != null && definition.isFinal() && definition.getConstantValue() != null) {
                node.remove();
                return null;
            }

            if (_currentInitializerMethod != null &&
View Full Code Here

                if (!isSwitchMapMethod(switchMapMethod)) {
                    return super.visitSwitchStatement(node, data);
                }

                final FieldDefinition switchMapField;

                try {
                    final FieldReference r = new MetadataParser(currentType.getResolver()).parseField(
                        currentType,
                        switchMapMethod.getName(),
View Full Code Here

        private static boolean isSwitchMapField(final FieldReference field) {
            if (field == null) {
                return false;
            }

            final FieldDefinition definition = field instanceof FieldDefinition ? (FieldDefinition) field
                                                                                : field.resolve();

            return definition != null &&
                   definition.isSynthetic() &&
                   definition.isStatic() &&
                   definition.isPrivate() &&
                   StringUtilities.startsWith(definition.getName(), "$SWITCH_TABLE$") &&
                   MetadataResolver.areEquivalent(BuiltinTypes.Integer.makeArrayType(), definition.getFieldType());
        }
View Full Code Here

        if (!(reference instanceof FieldReference)) {
            return;
        }

        final FieldDefinition resolvedField = ((FieldReference) reference).resolve();

        if (resolvedField == null || !resolvedField.isSynthetic()) {
            return;
        }

        final TypeReference typeReference = type.getType().getUserData(Keys.TYPE_REFERENCE);
View Full Code Here

                final MemberReferenceExpression reference = (MemberReferenceExpression) left;
                final MemberReference memberReference = reference.getUserData(Keys.MEMBER_REFERENCE);

                if (memberReference instanceof FieldReference) {
                    final FieldDefinition resolvedField = ((FieldReference) memberReference).resolve();

                    if (resolvedField != null && resolvedField.hasConstantValue()) {
                        final AstNode parent = node.getParent();

                        if (parent instanceof ExpressionStatement) {
                            parent.remove();
                        }
View Full Code Here

        if (node instanceof TypeDeclaration) {
            final TypeDeclaration type = (TypeDeclaration) node;

            for (final FieldDeclaration field : ofType(type.getMembers(), FieldDeclaration.class)) {
                final FieldDefinition fieldDefinition = field.getUserData(Keys.FIELD_DEFINITION);

                if (fieldDefinition != null &&
                    StringUtilities.equals(fieldDefinition.getFieldType().getInternalName(), localType.getInternalName())) {

                    return true;
                }

                if (!field.getVariables().isEmpty() && referencesType(first(field.getVariables()), localType)) {
View Full Code Here

TOP

Related Classes of com.strobel.assembler.metadata.FieldDefinition

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.