public boolean hasFinalFieldsConstructor(final MutableTypeDeclaration cls) { boolean _xblockexpression = false; { final ArrayList<TypeReference> expectedTypes = this.getFinalFieldsConstructorArgumentTypes(cls); final Function1<MutableConstructorDeclaration, Boolean> _function = (MutableConstructorDeclaration it) -> { final Function1<MutableParameterDeclaration, TypeReference> _function_1 = (MutableParameterDeclaration it_1) -> { return it_1.getType(); }; List<TypeReference> _list = IterableExtensions.<TypeReference>toList(IterableExtensions.map(it.getParameters(), _function_1)); return Boolean.valueOf(Objects.equal(_list, expectedTypes)); }; _xblockexpression = IterableExtensions.exists(cls.getDeclaredConstructors(), _function); } return _xblockexpression; }
public void makeFinalFieldsConstructor(final MutableConstructorDeclaration it) { boolean _isEmpty = this.getFinalFieldsConstructorArgumentTypes(it.getDeclaringType()).isEmpty(); if (_isEmpty) { final AnnotationReference anno = it.findAnnotation(this.context.findTypeGlobally(FinalFieldsConstructor.class));
public void addFinalFieldsConstructor(final MutableClassDeclaration it) { boolean _isEmpty = this.getFinalFieldsConstructorArgumentTypes(it).isEmpty(); if (_isEmpty) { final AnnotationReference anno = it.findAnnotation(this.context.findTypeGlobally(FinalFieldsConstructor.class)); StringConcatenation _builder = new StringConcatenation(); _builder.append("There are no final fields, this annotation has no effect"); this.context.addWarning(anno, _builder.toString()); return; } boolean _hasFinalFieldsConstructor = this.hasFinalFieldsConstructor(it); if (_hasFinalFieldsConstructor) { this.context.addError(it, this.getConstructorAlreadyExistsMessage(it)); return; } final Procedure1<MutableConstructorDeclaration> _function = (MutableConstructorDeclaration it_1) -> { this.context.setPrimarySourceElement(it_1, this.context.getPrimarySourceElement(it_1.getDeclaringType())); this.makeFinalFieldsConstructor(it_1); }; it.addConstructor(_function); }
public String getConstructorAlreadyExistsMessage(final MutableTypeDeclaration it) { StringConcatenation _builder = new StringConcatenation(); _builder.append("Cannot create FinalFieldsConstructor as a constructor with the signature \"new("); String _join = IterableExtensions.join(this.getFinalFieldsConstructorArgumentTypes(it), ","); _builder.append(_join); _builder.append(")\" already exists."); return _builder.toString(); }