You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@netbeans.apache.org by ju...@apache.org on 2019/10/31 13:05:52 UTC

[netbeans] branch master updated: [NETBEANS-1657] PHP visibility keywords via drop-down list (#1599)

This is an automated email from the ASF dual-hosted git repository.

junichi11 pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/netbeans.git


The following commit(s) were added to refs/heads/master by this push:
     new 885c078  [NETBEANS-1657] PHP visibility keywords via drop-down list (#1599)
885c078 is described below

commit 885c0781e989ce41a6db3a75cd0a4f20113d9789
Author: Junichi Yamamoto <ju...@apache.org>
AuthorDate: Thu Oct 31 22:05:42 2019 +0900

    [NETBEANS-1657] PHP visibility keywords via drop-down list (#1599)
    
    - Add ConvertVisibilitySuggestion
    - Note: Just convert the visibility keyword, i.e. don't check whether there is a problem (e.g. "public" -> "private")
    - In the case of interface, it is available if the visibility is implicit public ("" -> "public")
    e.g.
    Before:
    ```
    interface MyInterface {
        const IMPLICIT_CONST = "implicit";
        function implicitPublicMethod($param);
    }
    ```
    After:
    ```
    interface MyInterface {
        public const IMPLICIT_CONST = "implicit";
        public function implicitPublicMethod($param);
    }
    ```
---
 .../modules/php/editor/api/PhpModifiers.java       |   6 +
 .../modules/php/editor/resources/layer.xml         |   1 +
 .../verification/ConvertVisibilitySuggestion.java  | 331 +++++++++++++++++++++
 .../testConvertVisibility.php                      |  90 ++++++
 ...vertVisibilitySuggestionAbstractMethod_01.hints |   5 +
 ...vertVisibilitySuggestionAbstractMethod_02.hints |   4 +
 ...vertVisibilitySuggestionAbstractMethod_03.hints |   4 +
 ...vertVisibilitySuggestionAbstractMethod_04.hints |   5 +
 ...vertVisibilitySuggestionAbstractMethod_05.hints |   4 +
 ...vertVisibilitySuggestionAbstractMethod_06.hints |   4 +
 ...p.testConvertVisibilitySuggestionConst_01.hints |   6 +
 ...p.testConvertVisibilitySuggestionConst_02.hints |   5 +
 ...p.testConvertVisibilitySuggestionConst_03.hints |   5 +
 ...p.testConvertVisibilitySuggestionConst_04.hints |   5 +
 ...ConvertVisibilitySuggestionGlobalConst_01.hints |   0
 ...vertVisibilitySuggestionInterfaceConst_01.hints |   4 +
 ...vertVisibilitySuggestionInterfaceConst_02.hints |   0
 ...ertVisibilitySuggestionInterfaceMethod_01.hints |   4 +
 ...ertVisibilitySuggestionInterfaceMethod_02.hints |   0
 ...ertVisibilitySuggestionInterfaceMethod_03.hints |   4 +
 ...ertVisibilitySuggestionInterfaceMethod_04.hints |   0
 ....testConvertVisibilitySuggestionMethod_01.hints |   6 +
 ....testConvertVisibilitySuggestionMethod_02.hints |   5 +
 ....testConvertVisibilitySuggestionMethod_03.hints |   5 +
 ....testConvertVisibilitySuggestionMethod_04.hints |   5 +
 ....testConvertVisibilitySuggestionMethod_05.hints |   6 +
 ....testConvertVisibilitySuggestionMethod_06.hints |   5 +
 ....testConvertVisibilitySuggestionMethod_07.hints |   5 +
 ....testConvertVisibilitySuggestionMethod_08.hints |   5 +
 ...estConvertVisibilitySuggestionProperty_01.hints |   5 +
 ...estConvertVisibilitySuggestionProperty_02.hints |   5 +
 ...estConvertVisibilitySuggestionProperty_03.hints |   5 +
 ...estConvertVisibilitySuggestionProperty_04.hints |   5 +
 ...estConvertVisibilitySuggestionProperty_05.hints |   5 +
 ...estConvertVisibilitySuggestionProperty_06.hints |   5 +
 ...estConvertVisibilitySuggestionProperty_07.hints |   5 +
 ...estConvertVisibilitySuggestionProperty_08.hints |   5 +
 ...estConvertVisibilitySuggestionProperty_09.hints |   6 +
 .../testConvertVisibilityAbstractClass.php         |  13 +
 ...rtVisibilitySuggestionAbstractClassFix_01.fixed |  13 +
 ...rtVisibilitySuggestionAbstractClassFix_02.fixed |  13 +
 ...rtVisibilitySuggestionAbstractClassFix_03.fixed |  13 +
 ...rtVisibilitySuggestionAbstractClassFix_04.fixed |  13 +
 ...rtVisibilitySuggestionAbstractClassFix_05.fixed |  13 +
 ...rtVisibilitySuggestionAbstractClassFix_06.fixed |  13 +
 .../testConvertVisibilityConst.php                 |  10 +
 ...estConvertVisibilitySuggestionConstFix_01.fixed |  10 +
 ...estConvertVisibilitySuggestionConstFix_02.fixed |  10 +
 ...estConvertVisibilitySuggestionConstFix_03.fixed |  10 +
 ...estConvertVisibilitySuggestionConstFix_04.fixed |  10 +
 .../testConvertVisibilityInterface.php             |  16 +
 ...onvertVisibilitySuggestionInterfaceFix_01.fixed |  16 +
 ...onvertVisibilitySuggestionInterfaceFix_02.fixed |  16 +
 ...onvertVisibilitySuggestionInterfaceFix_03.fixed |  16 +
 .../testConvertVisibilityMethod.php                |  30 ++
 ...stConvertVisibilitySuggestionMethodFix_01.fixed |  30 ++
 ...stConvertVisibilitySuggestionMethodFix_02.fixed |  30 ++
 ...stConvertVisibilitySuggestionMethodFix_03.fixed |  30 ++
 ...stConvertVisibilitySuggestionMethodFix_04.fixed |  30 ++
 ...stConvertVisibilitySuggestionMethodFix_05.fixed |  30 ++
 ...stConvertVisibilitySuggestionMethodFix_06.fixed |  30 ++
 ...stConvertVisibilitySuggestionMethodFix_07.fixed |  30 ++
 ...stConvertVisibilitySuggestionMethodFix_08.fixed |  30 ++
 .../testConvertVisibilityProperty.php              |  15 +
 ...ConvertVisibilitySuggestionPropertyFix_01.fixed |  15 +
 ...ConvertVisibilitySuggestionPropertyFix_02.fixed |  15 +
 ...ConvertVisibilitySuggestionPropertyFix_03.fixed |  15 +
 ...ConvertVisibilitySuggestionPropertyFix_04.fixed |  15 +
 ...ConvertVisibilitySuggestionPropertyFix_05.fixed |  15 +
 ...ConvertVisibilitySuggestionPropertyFix_06.fixed |  15 +
 ...ConvertVisibilitySuggestionPropertyFix_07.fixed |  15 +
 ...ConvertVisibilitySuggestionPropertyFix_08.fixed |  15 +
 ...ConvertVisibilitySuggestionPropertyFix_09.fixed |  15 +
 .../ConvertVisibilitySuggestionTest.java           | 289 ++++++++++++++++++
 74 files changed, 1489 insertions(+)

diff --git a/php/php.editor/src/org/netbeans/modules/php/editor/api/PhpModifiers.java b/php/php.editor/src/org/netbeans/modules/php/editor/api/PhpModifiers.java
index b0076e6..6265000 100644
--- a/php/php.editor/src/org/netbeans/modules/php/editor/api/PhpModifiers.java
+++ b/php/php.editor/src/org/netbeans/modules/php/editor/api/PhpModifiers.java
@@ -32,6 +32,12 @@ public final class PhpModifiers extends Modifier {
 
     private static final PhpModifiers EMPTY = new PhpModifiers(NO_FLAGS);
 
+    // visibility
+    public static final String VISIBILITY_VAR = "var"; // NOI18N
+    public static final String VISIBILITY_PUBLIC = "public"; // NOI18N
+    public static final String VISIBILITY_PRIVATE = "private"; // NOI18N
+    public static final String VISIBILITY_PROTECTED = "protected"; // NOI18N
+
     public static PhpModifiers noModifiers() {
         return fromBitMask(new int[]{});
     }
diff --git a/php/php.editor/src/org/netbeans/modules/php/editor/resources/layer.xml b/php/php.editor/src/org/netbeans/modules/php/editor/resources/layer.xml
index 8012ead..d8a4e62 100644
--- a/php/php.editor/src/org/netbeans/modules/php/editor/resources/layer.xml
+++ b/php/php.editor/src/org/netbeans/modules/php/editor/resources/layer.xml
@@ -394,6 +394,7 @@
                     <file name="org-netbeans-modules-php-editor-verification-ArrowFunctionSuggestion.instance"/>
                     <file name="org-netbeans-modules-php-editor-verification-AssignVariableSuggestion.instance"/>
                     <file name="org-netbeans-modules-php-editor-verification-CombinedAssignmentOperatorSuggestion.instance"/>
+                    <file name="org-netbeans-modules-php-editor-verification-ConvertVisibilitySuggestion.instance"/>
                     <file name="org-netbeans-modules-php-editor-verification-DeclareStrictTypesSuggestion.instance"/>
                     <file name="org-netbeans-modules-php-editor-verification-IdenticalComparisonSuggestion.instance"/>
                     <file name="org-netbeans-modules-php-editor-verification-InitializeFieldSuggestion.instance"/>
diff --git a/php/php.editor/src/org/netbeans/modules/php/editor/verification/ConvertVisibilitySuggestion.java b/php/php.editor/src/org/netbeans/modules/php/editor/verification/ConvertVisibilitySuggestion.java
new file mode 100644
index 0000000..b2f1c89
--- /dev/null
+++ b/php/php.editor/src/org/netbeans/modules/php/editor/verification/ConvertVisibilitySuggestion.java
@@ -0,0 +1,331 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you 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 org.netbeans.modules.php.editor.verification;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import javax.swing.text.BadLocationException;
+import javax.swing.text.Document;
+import org.netbeans.editor.BaseDocument;
+import org.netbeans.modules.csl.api.EditList;
+import org.netbeans.modules.csl.api.Hint;
+import org.netbeans.modules.csl.api.HintFix;
+import org.netbeans.modules.csl.api.OffsetRange;
+import org.netbeans.modules.csl.spi.support.CancelSupport;
+import org.netbeans.modules.php.editor.api.PhpModifiers;
+import org.netbeans.modules.php.editor.parser.PHPParseResult;
+import org.netbeans.modules.php.editor.parser.astnodes.ASTNode;
+import org.netbeans.modules.php.editor.parser.astnodes.BodyDeclaration;
+import org.netbeans.modules.php.editor.parser.astnodes.BodyDeclaration.Modifier;
+import org.netbeans.modules.php.editor.parser.astnodes.ConstantDeclaration;
+import org.netbeans.modules.php.editor.parser.astnodes.FieldsDeclaration;
+import org.netbeans.modules.php.editor.parser.astnodes.InterfaceDeclaration;
+import org.netbeans.modules.php.editor.parser.astnodes.MethodDeclaration;
+import org.netbeans.modules.php.editor.parser.astnodes.visitors.DefaultVisitor;
+import org.openide.filesystems.FileObject;
+import org.openide.util.NbBundle;
+import org.openide.util.Pair;
+
+/**
+ * Convert the visibility of a property, a method, or a constant.
+ */
+public class ConvertVisibilitySuggestion extends SuggestionRule {
+
+    private static final String HINT_ID = "Convert.Visibility.Suggestion"; // NOI18N
+    private static final Logger LOGGER = Logger.getLogger(ConvertVisibilitySuggestion.class.getName());
+
+    @Override
+    public String getId() {
+        return HINT_ID;
+    }
+
+    @Override
+    @NbBundle.Messages("ConvertVisibilitySuggestion.Description=Convert the visibility of a property, a method, or a constant. Please convert it carefully. (e.g. from public to private)")
+    public String getDescription() {
+        return Bundle.ConvertVisibilitySuggestion_Description();
+    }
+
+    @Override
+    @NbBundle.Messages("ConvertVisibilitySuggestion.DisplayName=Convert Visibility")
+    public String getDisplayName() {
+        return Bundle.ConvertVisibilitySuggestion_DisplayName();
+    }
+
+    @Override
+    public void invoke(PHPRuleContext context, List<Hint> result) {
+        PHPParseResult phpParseResult = (PHPParseResult) context.parserResult;
+        if (phpParseResult.getProgram() == null) {
+            return;
+        }
+        if (CancelSupport.getDefault().isCancelled()) {
+            return;
+        }
+        final BaseDocument doc = context.doc;
+        int caretOffset = getCaretOffset();
+        OffsetRange lineBounds = VerificationUtils.createLineBounds(caretOffset, doc);
+        if (lineBounds.containsInclusive(caretOffset)) {
+            FileObject fileObject = phpParseResult.getSnapshot().getSource().getFileObject();
+            if (fileObject != null) {
+                CheckVisitor checkVisitor = new CheckVisitor(fileObject, this, context.doc, lineBounds);
+                phpParseResult.getProgram().accept(checkVisitor);
+                if (CancelSupport.getDefault().isCancelled()) {
+                    return;
+                }
+                result.addAll(checkVisitor.getHints());
+            }
+        }
+    }
+
+    private static final class CheckVisitor extends DefaultVisitor {
+
+        private final FileObject fileObject;
+        private final ConvertVisibilitySuggestion suggestion;
+        private final BaseDocument document;
+        private final OffsetRange lineRange;
+        private final List<FixInfo> fixInfos = new ArrayList<>();
+        private boolean isInInterface;
+
+        public CheckVisitor(FileObject fileObject, ConvertVisibilitySuggestion suggestion, BaseDocument document, OffsetRange lineRange) {
+            this.fileObject = fileObject;
+            this.suggestion = suggestion;
+            this.document = document;
+            this.lineRange = lineRange;
+        }
+
+        @NbBundle.Messages("ConvertVisibilitySuggestion.Hint.Description=You can convert the visibility if needed")
+        public List<Hint> getHints() {
+            List<Hint> hints = new ArrayList<>();
+            for (FixInfo fixInfo : fixInfos) {
+                if (CancelSupport.getDefault().isCancelled()) {
+                    return Collections.emptyList();
+                }
+                List<HintFix> createFixes = createFixes(fixInfo);
+                if (!createFixes.isEmpty()) {
+                    hints.add(new Hint(suggestion, Bundle.ConvertVisibilitySuggestion_Hint_Description(), fileObject, lineRange, createFixes, 500));
+                }
+            }
+            return hints;
+        }
+
+        private List<HintFix> createFixes(FixInfo fixInfo) {
+            List<HintFix> hintFixes = new ArrayList<>();
+            hintFixes.addAll(fixInfo.createFixes(document));
+            return hintFixes;
+        }
+
+        @Override
+        public void scan(ASTNode node) {
+            if (CancelSupport.getDefault().isCancelled()) {
+                return;
+            }
+            if (node != null && (VerificationUtils.isBefore(node.getStartOffset(), lineRange.getEnd()))) {
+                super.scan(node);
+            }
+        }
+
+        @Override
+        public void visit(InterfaceDeclaration node) {
+            isInInterface = true;
+            super.visit(node);
+            isInInterface = false;
+        }
+
+        @Override
+        public void visit(FieldsDeclaration node) {
+            if (CancelSupport.getDefault().isCancelled()) {
+                return;
+            }
+            OffsetRange nodeRange = new OffsetRange(node.getStartOffset(), node.getEndOffset());
+            if (lineRange.overlaps(nodeRange)) {
+                processBodyDeclaration(node);
+            }
+        }
+
+        @Override
+        public void visit(ConstantDeclaration node) {
+            if (CancelSupport.getDefault().isCancelled()
+                    || node.isGlobal()) {
+                return;
+            }
+            OffsetRange nodeRange = new OffsetRange(node.getStartOffset(), node.getEndOffset());
+            if (lineRange.overlaps(nodeRange)) {
+                processBodyDeclaration(node);
+            }
+        }
+
+        @Override
+        public void visit(MethodDeclaration node) {
+            if (CancelSupport.getDefault().isCancelled()) {
+                return;
+            }
+            OffsetRange nodeRange = new OffsetRange(node.getStartOffset(), node.getEndOffset());
+            if (lineRange.overlaps(nodeRange)) {
+                processBodyDeclaration(node);
+            }
+        }
+
+        private void processBodyDeclaration(BodyDeclaration node) {
+            fixInfos.add(new FixInfo(node, isInInterface));
+            super.visit(node);
+        }
+    }
+
+    private static final class FixInfo {
+
+        private final BodyDeclaration bodyDeclaration;
+        private final boolean isInInterface;
+        private final boolean isAbstract;
+
+        public FixInfo(BodyDeclaration bodyDeclaration, boolean isInInterface) {
+            this.bodyDeclaration = bodyDeclaration;
+            this.isInInterface = isInInterface;
+            this.isAbstract = Modifier.isAbstract(bodyDeclaration.getModifier());
+        }
+
+        public Pair<String, OffsetRange> getVisibilityRange(Document document) {
+            String visibility = "implicit"; // NOI18N
+            int startOffset = bodyDeclaration.getStartOffset();
+            int endOffset = bodyDeclaration.getEndOffset();
+            try {
+                String text = document.getText(startOffset, endOffset - startOffset);
+                int indexOfVisibility = -1;
+                if (Modifier.isPublic(bodyDeclaration.getModifier())) {
+                    indexOfVisibility = text.indexOf(PhpModifiers.VISIBILITY_PUBLIC + " "); // NOI18N
+                    visibility = PhpModifiers.VISIBILITY_PUBLIC;
+                    if (indexOfVisibility == -1) {
+                        indexOfVisibility = text.indexOf(PhpModifiers.VISIBILITY_VAR + " "); // NOI18N
+                        visibility = PhpModifiers.VISIBILITY_VAR;
+                    }
+                    if (indexOfVisibility == -1) {
+                        visibility = "implicit"; // NOI18N
+                    }
+                } else if (Modifier.isPrivate(bodyDeclaration.getModifier())) {
+                    indexOfVisibility = text.indexOf(PhpModifiers.VISIBILITY_PRIVATE + " "); // NOI18N
+                    visibility = PhpModifiers.VISIBILITY_PRIVATE;
+                } else if (Modifier.isProtected(bodyDeclaration.getModifier())) {
+                    indexOfVisibility = text.indexOf(PhpModifiers.VISIBILITY_PROTECTED + " "); // NOI18N
+                    visibility = PhpModifiers.VISIBILITY_PROTECTED;
+                }
+                int visibilityStart = startOffset;
+                int visibilityEnd = startOffset;
+                if (indexOfVisibility != -1) {
+                    visibilityStart += indexOfVisibility;
+                    visibilityEnd = visibilityStart + visibility.length();
+                } else if (indexOfVisibility == -1 && isAbstract) {
+                    // abstract function implicitPublic();
+                    //          ^add here
+                    visibilityStart += "abstract ".length(); // NOI18N
+                    visibilityEnd = visibilityStart;
+                }
+                return Pair.of(visibility, new OffsetRange(visibilityStart, visibilityEnd));
+            } catch (BadLocationException ex) {
+                LOGGER.log(Level.WARNING, "Incorrect offset: {0}", ex.offsetRequested()); // NOI18N
+            }
+            return Pair.of(visibility, OffsetRange.NONE);
+        }
+
+        public List<HintFix> createFixes(BaseDocument document) {
+            ArrayList<HintFix> fixes = new ArrayList<>();
+            Pair<String, OffsetRange> visibilityRange = getVisibilityRange(document);
+            String visibility = visibilityRange.first();
+            OffsetRange range = visibilityRange.second();
+            switch (visibility) {
+                case "implicit": // NOI18N
+                    fixes.add(new Fix(range, PhpModifiers.VISIBILITY_PUBLIC + " ", document)); // NOI18N
+                    if (!isInInterface) {
+                        if (!isAbstract) {
+                            fixes.add(new Fix(range, PhpModifiers.VISIBILITY_PRIVATE + " ", document)); // NOI18N
+                        }
+                        fixes.add(new Fix(range, PhpModifiers.VISIBILITY_PROTECTED + " ", document)); // NOI18N
+                    }
+                    break;
+                case PhpModifiers.VISIBILITY_VAR:
+                    fixes.add(new Fix(range, PhpModifiers.VISIBILITY_PUBLIC, document));
+                    fixes.add(new Fix(range, PhpModifiers.VISIBILITY_PRIVATE, document));
+                    fixes.add(new Fix(range, PhpModifiers.VISIBILITY_PROTECTED, document));
+                    break;
+                case PhpModifiers.VISIBILITY_PUBLIC:
+                    if (!isInInterface) {
+                        if (!isAbstract) {
+                            fixes.add(new Fix(range, PhpModifiers.VISIBILITY_PRIVATE, document));
+                        }
+                        fixes.add(new Fix(range, PhpModifiers.VISIBILITY_PROTECTED, document));
+                    }
+                    break;
+                case PhpModifiers.VISIBILITY_PRIVATE:
+                    fixes.add(new Fix(range, PhpModifiers.VISIBILITY_PUBLIC, document));
+                    fixes.add(new Fix(range, PhpModifiers.VISIBILITY_PROTECTED, document));
+                    break;
+                case PhpModifiers.VISIBILITY_PROTECTED:
+                    fixes.add(new Fix(range, PhpModifiers.VISIBILITY_PUBLIC, document));
+                    if (!isAbstract) {
+                        fixes.add(new Fix(range, PhpModifiers.VISIBILITY_PRIVATE, document));
+                    }
+                    break;
+                default:
+                    break;
+            }
+            return fixes;
+        }
+
+    }
+
+    private static final class Fix implements HintFix {
+
+        private final OffsetRange visibilityRange;
+        private final String newVisibility;
+        private final BaseDocument document;
+
+        private Fix(OffsetRange visibilityRange, String newVisibility, BaseDocument document) {
+            this.visibilityRange = visibilityRange;
+            this.newVisibility = newVisibility;
+            this.document = document;
+        }
+
+        @Override
+        @NbBundle.Messages({
+            "# {0} - visibility",
+            "ConvertVisibilitySuggestion.Fix.Description=Convert Visibility to \"{0}\""
+        })
+        public String getDescription() {
+            return Bundle.ConvertVisibilitySuggestion_Fix_Description(newVisibility.trim());
+        }
+
+        @Override
+        public void implement() throws Exception {
+            EditList edits = new EditList(document);
+            edits.replace(visibilityRange.getStart(), visibilityRange.getLength(), newVisibility, true, 0);
+            edits.apply();
+        }
+
+        @Override
+        public boolean isSafe() {
+            return true;
+        }
+
+        @Override
+        public boolean isInteractive() {
+            return false;
+        }
+
+    }
+}
diff --git a/php/php.editor/test/unit/data/testfiles/verification/ConvertVisibilitySuggestion/testConvertVisibility.php b/php/php.editor/test/unit/data/testfiles/verification/ConvertVisibilitySuggestion/testConvertVisibility.php
new file mode 100644
index 0000000..0852432
--- /dev/null
+++ b/php/php.editor/test/unit/data/testfiles/verification/ConvertVisibilitySuggestion/testConvertVisibility.php
@@ -0,0 +1,90 @@
+<?php
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you 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.
+ */
+
+const CONSTANT = "global";
+
+class Visibility {
+
+    var $var = "public";
+    public $public = "public";
+    public $public1 = "public", $public2 = "public";
+    private $private = "private";
+    protected $protected = "protected";
+    public static $publicStatic = "public";
+    public static $publicStatic1 = "public", $publicStatic2 = "public";
+    private static $privateStatic = "private";
+    protected static $protectedStatic = "protected";
+
+    const IMPLICIT_CONST = "implicit";
+    public const PUBLIC_CONST = "public";
+    private const PRIVATE_CONST = "private";
+    protected const PROTECTED_CONST = "protected";
+
+    function implicitMethod($param) {
+    }
+
+    public function publicMethod($param) {
+    }
+
+    private function privateMethod($param) {
+    }
+
+    protected function protectedMethod($param) {
+    }
+
+    static function implicitStaticMethod($param) {
+    }
+
+    public static function publicStaticMethod($param) {
+    }
+
+    private static function privateStaticMethod($param) {
+    }
+
+    protected static function protectedStaticMethod($param) {
+    }
+
+}
+
+abstract class AbstarctClass {
+
+    abstract function abstractImplicitPublic();
+    abstract public function abstractPublic();
+    abstract protected function abstractProtected();
+    // can't be declared private
+    // abstract private function abstractPrivate();
+    abstract static function abstractImplicitPublicStatic();
+    abstract public static function abstractPublicStatic();
+    abstract protected static function abstractProtectedStatic();
+}
+
+interface InterfaceName {
+
+    const INTERFACE_IMPLICIT_CONST = "implicit";
+    public const INTERFACE_PUBLIC_CONST = "implicit";
+
+    function interfaceImplicitMethod($param);
+
+    public function interfacePublicMethod($param);
+
+    static function interfaceImplicitStaticMethod();
+
+    public static function interfaceImplicitPublicStaticMethod();
+}
diff --git a/php/php.editor/test/unit/data/testfiles/verification/ConvertVisibilitySuggestion/testConvertVisibility.php.testConvertVisibilitySuggestionAbstractMethod_01.hints b/php/php.editor/test/unit/data/testfiles/verification/ConvertVisibilitySuggestion/testConvertVisibility.php.testConvertVisibilitySuggestionAbstractMethod_01.hints
new file mode 100644
index 0000000..147dfd9
--- /dev/null
+++ b/php/php.editor/test/unit/data/testfiles/verification/ConvertVisibilitySuggestion/testConvertVisibility.php.testConvertVisibilitySuggestionAbstractMethod_01.hints
@@ -0,0 +1,5 @@
+    abstract function abstractImplici^tPublic();
+-----------------------------------------------
+HINT:You can convert the visibility if needed
+FIX:Convert Visibility to "public"
+FIX:Convert Visibility to "protected"
diff --git a/php/php.editor/test/unit/data/testfiles/verification/ConvertVisibilitySuggestion/testConvertVisibility.php.testConvertVisibilitySuggestionAbstractMethod_02.hints b/php/php.editor/test/unit/data/testfiles/verification/ConvertVisibilitySuggestion/testConvertVisibility.php.testConvertVisibilitySuggestionAbstractMethod_02.hints
new file mode 100644
index 0000000..6fb7f36
--- /dev/null
+++ b/php/php.editor/test/unit/data/testfiles/verification/ConvertVisibilitySuggestion/testConvertVisibility.php.testConvertVisibilitySuggestionAbstractMethod_02.hints
@@ -0,0 +1,4 @@
+    abstract public function abstractP^ublic();
+----------------------------------------------
+HINT:You can convert the visibility if needed
+FIX:Convert Visibility to "protected"
diff --git a/php/php.editor/test/unit/data/testfiles/verification/ConvertVisibilitySuggestion/testConvertVisibility.php.testConvertVisibilitySuggestionAbstractMethod_03.hints b/php/php.editor/test/unit/data/testfiles/verification/ConvertVisibilitySuggestion/testConvertVisibility.php.testConvertVisibilitySuggestionAbstractMethod_03.hints
new file mode 100644
index 0000000..ae0b3dc
--- /dev/null
+++ b/php/php.editor/test/unit/data/testfiles/verification/ConvertVisibilitySuggestion/testConvertVisibility.php.testConvertVisibilitySuggestionAbstractMethod_03.hints
@@ -0,0 +1,4 @@
+    abstract protected ^function abstractProtected();
+----------------------------------------------------
+HINT:You can convert the visibility if needed
+FIX:Convert Visibility to "public"
diff --git a/php/php.editor/test/unit/data/testfiles/verification/ConvertVisibilitySuggestion/testConvertVisibility.php.testConvertVisibilitySuggestionAbstractMethod_04.hints b/php/php.editor/test/unit/data/testfiles/verification/ConvertVisibilitySuggestion/testConvertVisibility.php.testConvertVisibilitySuggestionAbstractMethod_04.hints
new file mode 100644
index 0000000..a76e566
--- /dev/null
+++ b/php/php.editor/test/unit/data/testfiles/verification/ConvertVisibilitySuggestion/testConvertVisibility.php.testConvertVisibilitySuggestionAbstractMethod_04.hints
@@ -0,0 +1,5 @@
+    abstract static function abstractImplicitPu^blicStatic();
+------------------------------------------------------------
+HINT:You can convert the visibility if needed
+FIX:Convert Visibility to "public"
+FIX:Convert Visibility to "protected"
diff --git a/php/php.editor/test/unit/data/testfiles/verification/ConvertVisibilitySuggestion/testConvertVisibility.php.testConvertVisibilitySuggestionAbstractMethod_05.hints b/php/php.editor/test/unit/data/testfiles/verification/ConvertVisibilitySuggestion/testConvertVisibility.php.testConvertVisibilitySuggestionAbstractMethod_05.hints
new file mode 100644
index 0000000..239c0e1
--- /dev/null
+++ b/php/php.editor/test/unit/data/testfiles/verification/ConvertVisibilitySuggestion/testConvertVisibility.php.testConvertVisibilitySuggestionAbstractMethod_05.hints
@@ -0,0 +1,4 @@
+    abstract ^public static function abstractPublicStatic();
+-----------------------------------------------------------
+HINT:You can convert the visibility if needed
+FIX:Convert Visibility to "protected"
diff --git a/php/php.editor/test/unit/data/testfiles/verification/ConvertVisibilitySuggestion/testConvertVisibility.php.testConvertVisibilitySuggestionAbstractMethod_06.hints b/php/php.editor/test/unit/data/testfiles/verification/ConvertVisibilitySuggestion/testConvertVisibility.php.testConvertVisibilitySuggestionAbstractMethod_06.hints
new file mode 100644
index 0000000..eaa5636
--- /dev/null
+++ b/php/php.editor/test/unit/data/testfiles/verification/ConvertVisibilitySuggestion/testConvertVisibility.php.testConvertVisibilitySuggestionAbstractMethod_06.hints
@@ -0,0 +1,4 @@
+    abstract protected static function abstractProtectedStat^ic();
+-----------------------------------------------------------------
+HINT:You can convert the visibility if needed
+FIX:Convert Visibility to "public"
diff --git a/php/php.editor/test/unit/data/testfiles/verification/ConvertVisibilitySuggestion/testConvertVisibility.php.testConvertVisibilitySuggestionConst_01.hints b/php/php.editor/test/unit/data/testfiles/verification/ConvertVisibilitySuggestion/testConvertVisibility.php.testConvertVisibilitySuggestionConst_01.hints
new file mode 100644
index 0000000..6e82bf3
--- /dev/null
+++ b/php/php.editor/test/unit/data/testfiles/verification/ConvertVisibilitySuggestion/testConvertVisibility.php.testConvertVisibilitySuggestionConst_01.hints
@@ -0,0 +1,6 @@
+    const IMPLICIT_CO^NST = "implicit";
+--------------------------------------
+HINT:You can convert the visibility if needed
+FIX:Convert Visibility to "public"
+FIX:Convert Visibility to "private"
+FIX:Convert Visibility to "protected"
diff --git a/php/php.editor/test/unit/data/testfiles/verification/ConvertVisibilitySuggestion/testConvertVisibility.php.testConvertVisibilitySuggestionConst_02.hints b/php/php.editor/test/unit/data/testfiles/verification/ConvertVisibilitySuggestion/testConvertVisibility.php.testConvertVisibilitySuggestionConst_02.hints
new file mode 100644
index 0000000..f8b89c3
--- /dev/null
+++ b/php/php.editor/test/unit/data/testfiles/verification/ConvertVisibilitySuggestion/testConvertVisibility.php.testConvertVisibilitySuggestionConst_02.hints
@@ -0,0 +1,5 @@
+    public const PUBLIC_CONST = "pub^lic";
+-----------------------------------------
+HINT:You can convert the visibility if needed
+FIX:Convert Visibility to "private"
+FIX:Convert Visibility to "protected"
diff --git a/php/php.editor/test/unit/data/testfiles/verification/ConvertVisibilitySuggestion/testConvertVisibility.php.testConvertVisibilitySuggestionConst_03.hints b/php/php.editor/test/unit/data/testfiles/verification/ConvertVisibilitySuggestion/testConvertVisibility.php.testConvertVisibilitySuggestionConst_03.hints
new file mode 100644
index 0000000..75b555a
--- /dev/null
+++ b/php/php.editor/test/unit/data/testfiles/verification/ConvertVisibilitySuggestion/testConvertVisibility.php.testConvertVisibilitySuggestionConst_03.hints
@@ -0,0 +1,5 @@
+    private const PRIVATE_CONST = "priva^te";
+--------------------------------------------
+HINT:You can convert the visibility if needed
+FIX:Convert Visibility to "public"
+FIX:Convert Visibility to "protected"
diff --git a/php/php.editor/test/unit/data/testfiles/verification/ConvertVisibilitySuggestion/testConvertVisibility.php.testConvertVisibilitySuggestionConst_04.hints b/php/php.editor/test/unit/data/testfiles/verification/ConvertVisibilitySuggestion/testConvertVisibility.php.testConvertVisibilitySuggestionConst_04.hints
new file mode 100644
index 0000000..278cb2b
--- /dev/null
+++ b/php/php.editor/test/unit/data/testfiles/verification/ConvertVisibilitySuggestion/testConvertVisibility.php.testConvertVisibilitySuggestionConst_04.hints
@@ -0,0 +1,5 @@
+    protected const ^PROTECTED_CONST = "protected";
+--------------------------------------------------
+HINT:You can convert the visibility if needed
+FIX:Convert Visibility to "public"
+FIX:Convert Visibility to "private"
diff --git a/php/php.editor/test/unit/data/testfiles/verification/ConvertVisibilitySuggestion/testConvertVisibility.php.testConvertVisibilitySuggestionGlobalConst_01.hints b/php/php.editor/test/unit/data/testfiles/verification/ConvertVisibilitySuggestion/testConvertVisibility.php.testConvertVisibilitySuggestionGlobalConst_01.hints
new file mode 100644
index 0000000..e69de29
diff --git a/php/php.editor/test/unit/data/testfiles/verification/ConvertVisibilitySuggestion/testConvertVisibility.php.testConvertVisibilitySuggestionInterfaceConst_01.hints b/php/php.editor/test/unit/data/testfiles/verification/ConvertVisibilitySuggestion/testConvertVisibility.php.testConvertVisibilitySuggestionInterfaceConst_01.hints
new file mode 100644
index 0000000..c216f7d
--- /dev/null
+++ b/php/php.editor/test/unit/data/testfiles/verification/ConvertVisibilitySuggestion/testConvertVisibility.php.testConvertVisibilitySuggestionInterfaceConst_01.hints
@@ -0,0 +1,4 @@
+    const INTERFACE_IMPLICIT_CONST = "implici^t";
+------------------------------------------------
+HINT:You can convert the visibility if needed
+FIX:Convert Visibility to "public"
diff --git a/php/php.editor/test/unit/data/testfiles/verification/ConvertVisibilitySuggestion/testConvertVisibility.php.testConvertVisibilitySuggestionInterfaceConst_02.hints b/php/php.editor/test/unit/data/testfiles/verification/ConvertVisibilitySuggestion/testConvertVisibility.php.testConvertVisibilitySuggestionInterfaceConst_02.hints
new file mode 100644
index 0000000..e69de29
diff --git a/php/php.editor/test/unit/data/testfiles/verification/ConvertVisibilitySuggestion/testConvertVisibility.php.testConvertVisibilitySuggestionInterfaceMethod_01.hints b/php/php.editor/test/unit/data/testfiles/verification/ConvertVisibilitySuggestion/testConvertVisibility.php.testConvertVisibilitySuggestionInterfaceMethod_01.hints
new file mode 100644
index 0000000..487f860
--- /dev/null
+++ b/php/php.editor/test/unit/data/testfiles/verification/ConvertVisibilitySuggestion/testConvertVisibility.php.testConvertVisibilitySuggestionInterfaceMethod_01.hints
@@ -0,0 +1,4 @@
+    function interfaceImplicitMethod($para^m);
+---------------------------------------------
+HINT:You can convert the visibility if needed
+FIX:Convert Visibility to "public"
diff --git a/php/php.editor/test/unit/data/testfiles/verification/ConvertVisibilitySuggestion/testConvertVisibility.php.testConvertVisibilitySuggestionInterfaceMethod_02.hints b/php/php.editor/test/unit/data/testfiles/verification/ConvertVisibilitySuggestion/testConvertVisibility.php.testConvertVisibilitySuggestionInterfaceMethod_02.hints
new file mode 100644
index 0000000..e69de29
diff --git a/php/php.editor/test/unit/data/testfiles/verification/ConvertVisibilitySuggestion/testConvertVisibility.php.testConvertVisibilitySuggestionInterfaceMethod_03.hints b/php/php.editor/test/unit/data/testfiles/verification/ConvertVisibilitySuggestion/testConvertVisibility.php.testConvertVisibilitySuggestionInterfaceMethod_03.hints
new file mode 100644
index 0000000..3f0349a
--- /dev/null
+++ b/php/php.editor/test/unit/data/testfiles/verification/ConvertVisibilitySuggestion/testConvertVisibility.php.testConvertVisibilitySuggestionInterfaceMethod_03.hints
@@ -0,0 +1,4 @@
+    static function interfaceImplicitStaticMeth^od();
+----------------------------------------------------
+HINT:You can convert the visibility if needed
+FIX:Convert Visibility to "public"
diff --git a/php/php.editor/test/unit/data/testfiles/verification/ConvertVisibilitySuggestion/testConvertVisibility.php.testConvertVisibilitySuggestionInterfaceMethod_04.hints b/php/php.editor/test/unit/data/testfiles/verification/ConvertVisibilitySuggestion/testConvertVisibility.php.testConvertVisibilitySuggestionInterfaceMethod_04.hints
new file mode 100644
index 0000000..e69de29
diff --git a/php/php.editor/test/unit/data/testfiles/verification/ConvertVisibilitySuggestion/testConvertVisibility.php.testConvertVisibilitySuggestionMethod_01.hints b/php/php.editor/test/unit/data/testfiles/verification/ConvertVisibilitySuggestion/testConvertVisibility.php.testConvertVisibilitySuggestionMethod_01.hints
new file mode 100644
index 0000000..ff1f507
--- /dev/null
+++ b/php/php.editor/test/unit/data/testfiles/verification/ConvertVisibilitySuggestion/testConvertVisibility.php.testConvertVisibilitySuggestionMethod_01.hints
@@ -0,0 +1,6 @@
+    function implicitMethod($param)^ {
+-------------------------------------
+HINT:You can convert the visibility if needed
+FIX:Convert Visibility to "public"
+FIX:Convert Visibility to "private"
+FIX:Convert Visibility to "protected"
diff --git a/php/php.editor/test/unit/data/testfiles/verification/ConvertVisibilitySuggestion/testConvertVisibility.php.testConvertVisibilitySuggestionMethod_02.hints b/php/php.editor/test/unit/data/testfiles/verification/ConvertVisibilitySuggestion/testConvertVisibility.php.testConvertVisibilitySuggestionMethod_02.hints
new file mode 100644
index 0000000..0801560
--- /dev/null
+++ b/php/php.editor/test/unit/data/testfiles/verification/ConvertVisibilitySuggestion/testConvertVisibility.php.testConvertVisibilitySuggestionMethod_02.hints
@@ -0,0 +1,5 @@
+    public function publicMethod($para^m) {
+------------------------------------------
+HINT:You can convert the visibility if needed
+FIX:Convert Visibility to "private"
+FIX:Convert Visibility to "protected"
diff --git a/php/php.editor/test/unit/data/testfiles/verification/ConvertVisibilitySuggestion/testConvertVisibility.php.testConvertVisibilitySuggestionMethod_03.hints b/php/php.editor/test/unit/data/testfiles/verification/ConvertVisibilitySuggestion/testConvertVisibility.php.testConvertVisibilitySuggestionMethod_03.hints
new file mode 100644
index 0000000..c347eb7
--- /dev/null
+++ b/php/php.editor/test/unit/data/testfiles/verification/ConvertVisibilitySuggestion/testConvertVisibility.php.testConvertVisibilitySuggestionMethod_03.hints
@@ -0,0 +1,5 @@
+    private function privateMethod($param) {^
+--------------------------------------------
+HINT:You can convert the visibility if needed
+FIX:Convert Visibility to "public"
+FIX:Convert Visibility to "protected"
diff --git a/php/php.editor/test/unit/data/testfiles/verification/ConvertVisibilitySuggestion/testConvertVisibility.php.testConvertVisibilitySuggestionMethod_04.hints b/php/php.editor/test/unit/data/testfiles/verification/ConvertVisibilitySuggestion/testConvertVisibility.php.testConvertVisibilitySuggestionMethod_04.hints
new file mode 100644
index 0000000..ff8e60c
--- /dev/null
+++ b/php/php.editor/test/unit/data/testfiles/verification/ConvertVisibilitySuggestion/testConvertVisibility.php.testConvertVisibilitySuggestionMethod_04.hints
@@ -0,0 +1,5 @@
+    protected ^function protectedMethod($param) {
+------------------------------------------------
+HINT:You can convert the visibility if needed
+FIX:Convert Visibility to "public"
+FIX:Convert Visibility to "private"
diff --git a/php/php.editor/test/unit/data/testfiles/verification/ConvertVisibilitySuggestion/testConvertVisibility.php.testConvertVisibilitySuggestionMethod_05.hints b/php/php.editor/test/unit/data/testfiles/verification/ConvertVisibilitySuggestion/testConvertVisibility.php.testConvertVisibilitySuggestionMethod_05.hints
new file mode 100644
index 0000000..41bf8a2
--- /dev/null
+++ b/php/php.editor/test/unit/data/testfiles/verification/ConvertVisibilitySuggestion/testConvertVisibility.php.testConvertVisibilitySuggestionMethod_05.hints
@@ -0,0 +1,6 @@
+    static function implicitStaticMethod($pa^ram) {
+--------------------------------------------------
+HINT:You can convert the visibility if needed
+FIX:Convert Visibility to "public"
+FIX:Convert Visibility to "private"
+FIX:Convert Visibility to "protected"
diff --git a/php/php.editor/test/unit/data/testfiles/verification/ConvertVisibilitySuggestion/testConvertVisibility.php.testConvertVisibilitySuggestionMethod_06.hints b/php/php.editor/test/unit/data/testfiles/verification/ConvertVisibilitySuggestion/testConvertVisibility.php.testConvertVisibilitySuggestionMethod_06.hints
new file mode 100644
index 0000000..7a1b8c2
--- /dev/null
+++ b/php/php.editor/test/unit/data/testfiles/verification/ConvertVisibilitySuggestion/testConvertVisibility.php.testConvertVisibilitySuggestionMethod_06.hints
@@ -0,0 +1,5 @@
+    public static function publicStaticMe^thod($param) {
+-------------------------------------------------------
+HINT:You can convert the visibility if needed
+FIX:Convert Visibility to "private"
+FIX:Convert Visibility to "protected"
diff --git a/php/php.editor/test/unit/data/testfiles/verification/ConvertVisibilitySuggestion/testConvertVisibility.php.testConvertVisibilitySuggestionMethod_07.hints b/php/php.editor/test/unit/data/testfiles/verification/ConvertVisibilitySuggestion/testConvertVisibility.php.testConvertVisibilitySuggestionMethod_07.hints
new file mode 100644
index 0000000..0a7bb8f
--- /dev/null
+++ b/php/php.editor/test/unit/data/testfiles/verification/ConvertVisibilitySuggestion/testConvertVisibility.php.testConvertVisibilitySuggestionMethod_07.hints
@@ -0,0 +1,5 @@
+    private static ^function privateStaticMethod($param) {
+---------------------------------------------------------
+HINT:You can convert the visibility if needed
+FIX:Convert Visibility to "public"
+FIX:Convert Visibility to "protected"
diff --git a/php/php.editor/test/unit/data/testfiles/verification/ConvertVisibilitySuggestion/testConvertVisibility.php.testConvertVisibilitySuggestionMethod_08.hints b/php/php.editor/test/unit/data/testfiles/verification/ConvertVisibilitySuggestion/testConvertVisibility.php.testConvertVisibilitySuggestionMethod_08.hints
new file mode 100644
index 0000000..74192a7
--- /dev/null
+++ b/php/php.editor/test/unit/data/testfiles/verification/ConvertVisibilitySuggestion/testConvertVisibility.php.testConvertVisibilitySuggestionMethod_08.hints
@@ -0,0 +1,5 @@
+    prote^cted static function protectedStaticMethod($param) {
+-------------------------------------------------------------
+HINT:You can convert the visibility if needed
+FIX:Convert Visibility to "public"
+FIX:Convert Visibility to "private"
diff --git a/php/php.editor/test/unit/data/testfiles/verification/ConvertVisibilitySuggestion/testConvertVisibility.php.testConvertVisibilitySuggestionProperty_01.hints b/php/php.editor/test/unit/data/testfiles/verification/ConvertVisibilitySuggestion/testConvertVisibility.php.testConvertVisibilitySuggestionProperty_01.hints
new file mode 100644
index 0000000..b2c8910
--- /dev/null
+++ b/php/php.editor/test/unit/data/testfiles/verification/ConvertVisibilitySuggestion/testConvertVisibility.php.testConvertVisibilitySuggestionProperty_01.hints
@@ -0,0 +1,5 @@
+    public $public = ^"public";
+------------------------------
+HINT:You can convert the visibility if needed
+FIX:Convert Visibility to "private"
+FIX:Convert Visibility to "protected"
diff --git a/php/php.editor/test/unit/data/testfiles/verification/ConvertVisibilitySuggestion/testConvertVisibility.php.testConvertVisibilitySuggestionProperty_02.hints b/php/php.editor/test/unit/data/testfiles/verification/ConvertVisibilitySuggestion/testConvertVisibility.php.testConvertVisibilitySuggestionProperty_02.hints
new file mode 100644
index 0000000..83e2580
--- /dev/null
+++ b/php/php.editor/test/unit/data/testfiles/verification/ConvertVisibilitySuggestion/testConvertVisibility.php.testConvertVisibilitySuggestionProperty_02.hints
@@ -0,0 +1,5 @@
+    public $public1 = "public", ^$public2 = "public";
+----------------------------------------------------
+HINT:You can convert the visibility if needed
+FIX:Convert Visibility to "private"
+FIX:Convert Visibility to "protected"
diff --git a/php/php.editor/test/unit/data/testfiles/verification/ConvertVisibilitySuggestion/testConvertVisibility.php.testConvertVisibilitySuggestionProperty_03.hints b/php/php.editor/test/unit/data/testfiles/verification/ConvertVisibilitySuggestion/testConvertVisibility.php.testConvertVisibilitySuggestionProperty_03.hints
new file mode 100644
index 0000000..102a2d1
--- /dev/null
+++ b/php/php.editor/test/unit/data/testfiles/verification/ConvertVisibilitySuggestion/testConvertVisibility.php.testConvertVisibilitySuggestionProperty_03.hints
@@ -0,0 +1,5 @@
+    private $privat^e = "private";
+---------------------------------
+HINT:You can convert the visibility if needed
+FIX:Convert Visibility to "public"
+FIX:Convert Visibility to "protected"
diff --git a/php/php.editor/test/unit/data/testfiles/verification/ConvertVisibilitySuggestion/testConvertVisibility.php.testConvertVisibilitySuggestionProperty_04.hints b/php/php.editor/test/unit/data/testfiles/verification/ConvertVisibilitySuggestion/testConvertVisibility.php.testConvertVisibilitySuggestionProperty_04.hints
new file mode 100644
index 0000000..b88d68d
--- /dev/null
+++ b/php/php.editor/test/unit/data/testfiles/verification/ConvertVisibilitySuggestion/testConvertVisibility.php.testConvertVisibilitySuggestionProperty_04.hints
@@ -0,0 +1,5 @@
+    protected $prote^cted = "protected";
+---------------------------------------
+HINT:You can convert the visibility if needed
+FIX:Convert Visibility to "public"
+FIX:Convert Visibility to "private"
diff --git a/php/php.editor/test/unit/data/testfiles/verification/ConvertVisibilitySuggestion/testConvertVisibility.php.testConvertVisibilitySuggestionProperty_05.hints b/php/php.editor/test/unit/data/testfiles/verification/ConvertVisibilitySuggestion/testConvertVisibility.php.testConvertVisibilitySuggestionProperty_05.hints
new file mode 100644
index 0000000..5c2eba4
--- /dev/null
+++ b/php/php.editor/test/unit/data/testfiles/verification/ConvertVisibilitySuggestion/testConvertVisibility.php.testConvertVisibilitySuggestionProperty_05.hints
@@ -0,0 +1,5 @@
+    public static $^publicStatic = "public";
+-------------------------------------------
+HINT:You can convert the visibility if needed
+FIX:Convert Visibility to "private"
+FIX:Convert Visibility to "protected"
diff --git a/php/php.editor/test/unit/data/testfiles/verification/ConvertVisibilitySuggestion/testConvertVisibility.php.testConvertVisibilitySuggestionProperty_06.hints b/php/php.editor/test/unit/data/testfiles/verification/ConvertVisibilitySuggestion/testConvertVisibility.php.testConvertVisibilitySuggestionProperty_06.hints
new file mode 100644
index 0000000..4fa1770
--- /dev/null
+++ b/php/php.editor/test/unit/data/testfiles/verification/ConvertVisibilitySuggestion/testConvertVisibility.php.testConvertVisibilitySuggestionProperty_06.hints
@@ -0,0 +1,5 @@
+    public static ^$publicStatic1 = "public", $publicStatic2 = "public";
+-----------------------------------------------------------------------
+HINT:You can convert the visibility if needed
+FIX:Convert Visibility to "private"
+FIX:Convert Visibility to "protected"
diff --git a/php/php.editor/test/unit/data/testfiles/verification/ConvertVisibilitySuggestion/testConvertVisibility.php.testConvertVisibilitySuggestionProperty_07.hints b/php/php.editor/test/unit/data/testfiles/verification/ConvertVisibilitySuggestion/testConvertVisibility.php.testConvertVisibilitySuggestionProperty_07.hints
new file mode 100644
index 0000000..0a97075
--- /dev/null
+++ b/php/php.editor/test/unit/data/testfiles/verification/ConvertVisibilitySuggestion/testConvertVisibility.php.testConvertVisibilitySuggestionProperty_07.hints
@@ -0,0 +1,5 @@
+    private static $privateStatic = "privat^e";
+----------------------------------------------
+HINT:You can convert the visibility if needed
+FIX:Convert Visibility to "public"
+FIX:Convert Visibility to "protected"
diff --git a/php/php.editor/test/unit/data/testfiles/verification/ConvertVisibilitySuggestion/testConvertVisibility.php.testConvertVisibilitySuggestionProperty_08.hints b/php/php.editor/test/unit/data/testfiles/verification/ConvertVisibilitySuggestion/testConvertVisibility.php.testConvertVisibilitySuggestionProperty_08.hints
new file mode 100644
index 0000000..dce417b
--- /dev/null
+++ b/php/php.editor/test/unit/data/testfiles/verification/ConvertVisibilitySuggestion/testConvertVisibility.php.testConvertVisibilitySuggestionProperty_08.hints
@@ -0,0 +1,5 @@
+    protected static $protectedStatic = "protect^ed";
+----------------------------------------------------
+HINT:You can convert the visibility if needed
+FIX:Convert Visibility to "public"
+FIX:Convert Visibility to "private"
diff --git a/php/php.editor/test/unit/data/testfiles/verification/ConvertVisibilitySuggestion/testConvertVisibility.php.testConvertVisibilitySuggestionProperty_09.hints b/php/php.editor/test/unit/data/testfiles/verification/ConvertVisibilitySuggestion/testConvertVisibility.php.testConvertVisibilitySuggestionProperty_09.hints
new file mode 100644
index 0000000..7fa4d29
--- /dev/null
+++ b/php/php.editor/test/unit/data/testfiles/verification/ConvertVisibilitySuggestion/testConvertVisibility.php.testConvertVisibilitySuggestionProperty_09.hints
@@ -0,0 +1,6 @@
+    var $var ^= "public";
+------------------------
+HINT:You can convert the visibility if needed
+FIX:Convert Visibility to "public"
+FIX:Convert Visibility to "private"
+FIX:Convert Visibility to "protected"
diff --git a/php/php.editor/test/unit/data/testfiles/verification/ConvertVisibilitySuggestion/testConvertVisibilityAbstractClass.php b/php/php.editor/test/unit/data/testfiles/verification/ConvertVisibilitySuggestion/testConvertVisibilityAbstractClass.php
new file mode 100644
index 0000000..08efd27
--- /dev/null
+++ b/php/php.editor/test/unit/data/testfiles/verification/ConvertVisibilitySuggestion/testConvertVisibilityAbstractClass.php
@@ -0,0 +1,13 @@
+<?php
+// Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements; and to You under the Apache License, Version 2.0.
+abstract class AbstarctClass {
+
+    abstract function abstractImplicitPublic();
+    abstract public function abstractPublic();
+    abstract protected function abstractProtected();
+    // can't be declared private
+    // abstract private function abstractPrivate();
+    abstract static function abstractImplicitPublicStatic();
+    abstract public static function abstractPublicStatic();
+    abstract protected static function abstractProtectedStatic();
+}
diff --git a/php/php.editor/test/unit/data/testfiles/verification/ConvertVisibilitySuggestion/testConvertVisibilityAbstractClass.php.testConvertVisibilitySuggestionAbstractClassFix_01.fixed b/php/php.editor/test/unit/data/testfiles/verification/ConvertVisibilitySuggestion/testConvertVisibilityAbstractClass.php.testConvertVisibilitySuggestionAbstractClassFix_01.fixed
new file mode 100644
index 0000000..3212776
--- /dev/null
+++ b/php/php.editor/test/unit/data/testfiles/verification/ConvertVisibilitySuggestion/testConvertVisibilityAbstractClass.php.testConvertVisibilitySuggestionAbstractClassFix_01.fixed
@@ -0,0 +1,13 @@
+<?php
+// Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements; and to You under the Apache License, Version 2.0.
+abstract class AbstarctClass {
+
+    abstract public function abstractImplicitPublic();
+    abstract public function abstractPublic();
+    abstract protected function abstractProtected();
+    // can't be declared private
+    // abstract private function abstractPrivate();
+    abstract static function abstractImplicitPublicStatic();
+    abstract public static function abstractPublicStatic();
+    abstract protected static function abstractProtectedStatic();
+}
diff --git a/php/php.editor/test/unit/data/testfiles/verification/ConvertVisibilitySuggestion/testConvertVisibilityAbstractClass.php.testConvertVisibilitySuggestionAbstractClassFix_02.fixed b/php/php.editor/test/unit/data/testfiles/verification/ConvertVisibilitySuggestion/testConvertVisibilityAbstractClass.php.testConvertVisibilitySuggestionAbstractClassFix_02.fixed
new file mode 100644
index 0000000..2898976
--- /dev/null
+++ b/php/php.editor/test/unit/data/testfiles/verification/ConvertVisibilitySuggestion/testConvertVisibilityAbstractClass.php.testConvertVisibilitySuggestionAbstractClassFix_02.fixed
@@ -0,0 +1,13 @@
+<?php
+// Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements; and to You under the Apache License, Version 2.0.
+abstract class AbstarctClass {
+
+    abstract function abstractImplicitPublic();
+    abstract protected function abstractPublic();
+    abstract protected function abstractProtected();
+    // can't be declared private
+    // abstract private function abstractPrivate();
+    abstract static function abstractImplicitPublicStatic();
+    abstract public static function abstractPublicStatic();
+    abstract protected static function abstractProtectedStatic();
+}
diff --git a/php/php.editor/test/unit/data/testfiles/verification/ConvertVisibilitySuggestion/testConvertVisibilityAbstractClass.php.testConvertVisibilitySuggestionAbstractClassFix_03.fixed b/php/php.editor/test/unit/data/testfiles/verification/ConvertVisibilitySuggestion/testConvertVisibilityAbstractClass.php.testConvertVisibilitySuggestionAbstractClassFix_03.fixed
new file mode 100644
index 0000000..b68125e
--- /dev/null
+++ b/php/php.editor/test/unit/data/testfiles/verification/ConvertVisibilitySuggestion/testConvertVisibilityAbstractClass.php.testConvertVisibilitySuggestionAbstractClassFix_03.fixed
@@ -0,0 +1,13 @@
+<?php
+// Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements; and to You under the Apache License, Version 2.0.
+abstract class AbstarctClass {
+
+    abstract function abstractImplicitPublic();
+    abstract public function abstractPublic();
+    abstract public function abstractProtected();
+    // can't be declared private
+    // abstract private function abstractPrivate();
+    abstract static function abstractImplicitPublicStatic();
+    abstract public static function abstractPublicStatic();
+    abstract protected static function abstractProtectedStatic();
+}
diff --git a/php/php.editor/test/unit/data/testfiles/verification/ConvertVisibilitySuggestion/testConvertVisibilityAbstractClass.php.testConvertVisibilitySuggestionAbstractClassFix_04.fixed b/php/php.editor/test/unit/data/testfiles/verification/ConvertVisibilitySuggestion/testConvertVisibilityAbstractClass.php.testConvertVisibilitySuggestionAbstractClassFix_04.fixed
new file mode 100644
index 0000000..a10e104
--- /dev/null
+++ b/php/php.editor/test/unit/data/testfiles/verification/ConvertVisibilitySuggestion/testConvertVisibilityAbstractClass.php.testConvertVisibilitySuggestionAbstractClassFix_04.fixed
@@ -0,0 +1,13 @@
+<?php
+// Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements; and to You under the Apache License, Version 2.0.
+abstract class AbstarctClass {
+
+    abstract function abstractImplicitPublic();
+    abstract public function abstractPublic();
+    abstract protected function abstractProtected();
+    // can't be declared private
+    // abstract private function abstractPrivate();
+    abstract protected static function abstractImplicitPublicStatic();
+    abstract public static function abstractPublicStatic();
+    abstract protected static function abstractProtectedStatic();
+}
diff --git a/php/php.editor/test/unit/data/testfiles/verification/ConvertVisibilitySuggestion/testConvertVisibilityAbstractClass.php.testConvertVisibilitySuggestionAbstractClassFix_05.fixed b/php/php.editor/test/unit/data/testfiles/verification/ConvertVisibilitySuggestion/testConvertVisibilityAbstractClass.php.testConvertVisibilitySuggestionAbstractClassFix_05.fixed
new file mode 100644
index 0000000..5c3fcad
--- /dev/null
+++ b/php/php.editor/test/unit/data/testfiles/verification/ConvertVisibilitySuggestion/testConvertVisibilityAbstractClass.php.testConvertVisibilitySuggestionAbstractClassFix_05.fixed
@@ -0,0 +1,13 @@
+<?php
+// Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements; and to You under the Apache License, Version 2.0.
+abstract class AbstarctClass {
+
+    abstract function abstractImplicitPublic();
+    abstract public function abstractPublic();
+    abstract protected function abstractProtected();
+    // can't be declared private
+    // abstract private function abstractPrivate();
+    abstract static function abstractImplicitPublicStatic();
+    abstract protected static function abstractPublicStatic();
+    abstract protected static function abstractProtectedStatic();
+}
diff --git a/php/php.editor/test/unit/data/testfiles/verification/ConvertVisibilitySuggestion/testConvertVisibilityAbstractClass.php.testConvertVisibilitySuggestionAbstractClassFix_06.fixed b/php/php.editor/test/unit/data/testfiles/verification/ConvertVisibilitySuggestion/testConvertVisibilityAbstractClass.php.testConvertVisibilitySuggestionAbstractClassFix_06.fixed
new file mode 100644
index 0000000..4e41fce
--- /dev/null
+++ b/php/php.editor/test/unit/data/testfiles/verification/ConvertVisibilitySuggestion/testConvertVisibilityAbstractClass.php.testConvertVisibilitySuggestionAbstractClassFix_06.fixed
@@ -0,0 +1,13 @@
+<?php
+// Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements; and to You under the Apache License, Version 2.0.
+abstract class AbstarctClass {
+
+    abstract function abstractImplicitPublic();
+    abstract public function abstractPublic();
+    abstract protected function abstractProtected();
+    // can't be declared private
+    // abstract private function abstractPrivate();
+    abstract static function abstractImplicitPublicStatic();
+    abstract public static function abstractPublicStatic();
+    abstract public static function abstractProtectedStatic();
+}
diff --git a/php/php.editor/test/unit/data/testfiles/verification/ConvertVisibilitySuggestion/testConvertVisibilityConst.php b/php/php.editor/test/unit/data/testfiles/verification/ConvertVisibilitySuggestion/testConvertVisibilityConst.php
new file mode 100644
index 0000000..93b5782
--- /dev/null
+++ b/php/php.editor/test/unit/data/testfiles/verification/ConvertVisibilitySuggestion/testConvertVisibilityConst.php
@@ -0,0 +1,10 @@
+<?php
+// Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements; and to You under the Apache License, Version 2.0.
+class Visibility {
+
+    const IMPLICIT_CONST = "implicit";
+    public const PUBLIC_CONST = "public";
+    private const PRIVATE_CONST = "private";
+    protected const PROTECTED_CONST = "protected";
+
+}
diff --git a/php/php.editor/test/unit/data/testfiles/verification/ConvertVisibilitySuggestion/testConvertVisibilityConst.php.testConvertVisibilitySuggestionConstFix_01.fixed b/php/php.editor/test/unit/data/testfiles/verification/ConvertVisibilitySuggestion/testConvertVisibilityConst.php.testConvertVisibilitySuggestionConstFix_01.fixed
new file mode 100644
index 0000000..e405459
--- /dev/null
+++ b/php/php.editor/test/unit/data/testfiles/verification/ConvertVisibilitySuggestion/testConvertVisibilityConst.php.testConvertVisibilitySuggestionConstFix_01.fixed
@@ -0,0 +1,10 @@
+<?php
+// Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements; and to You under the Apache License, Version 2.0.
+class Visibility {
+
+    public const IMPLICIT_CONST = "implicit";
+    public const PUBLIC_CONST = "public";
+    private const PRIVATE_CONST = "private";
+    protected const PROTECTED_CONST = "protected";
+
+}
diff --git a/php/php.editor/test/unit/data/testfiles/verification/ConvertVisibilitySuggestion/testConvertVisibilityConst.php.testConvertVisibilitySuggestionConstFix_02.fixed b/php/php.editor/test/unit/data/testfiles/verification/ConvertVisibilitySuggestion/testConvertVisibilityConst.php.testConvertVisibilitySuggestionConstFix_02.fixed
new file mode 100644
index 0000000..731c5ad
--- /dev/null
+++ b/php/php.editor/test/unit/data/testfiles/verification/ConvertVisibilitySuggestion/testConvertVisibilityConst.php.testConvertVisibilitySuggestionConstFix_02.fixed
@@ -0,0 +1,10 @@
+<?php
+// Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements; and to You under the Apache License, Version 2.0.
+class Visibility {
+
+    const IMPLICIT_CONST = "implicit";
+    private const PUBLIC_CONST = "public";
+    private const PRIVATE_CONST = "private";
+    protected const PROTECTED_CONST = "protected";
+
+}
diff --git a/php/php.editor/test/unit/data/testfiles/verification/ConvertVisibilitySuggestion/testConvertVisibilityConst.php.testConvertVisibilitySuggestionConstFix_03.fixed b/php/php.editor/test/unit/data/testfiles/verification/ConvertVisibilitySuggestion/testConvertVisibilityConst.php.testConvertVisibilitySuggestionConstFix_03.fixed
new file mode 100644
index 0000000..52b4eed
--- /dev/null
+++ b/php/php.editor/test/unit/data/testfiles/verification/ConvertVisibilitySuggestion/testConvertVisibilityConst.php.testConvertVisibilitySuggestionConstFix_03.fixed
@@ -0,0 +1,10 @@
+<?php
+// Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements; and to You under the Apache License, Version 2.0.
+class Visibility {
+
+    const IMPLICIT_CONST = "implicit";
+    public const PUBLIC_CONST = "public";
+    protected const PRIVATE_CONST = "private";
+    protected const PROTECTED_CONST = "protected";
+
+}
diff --git a/php/php.editor/test/unit/data/testfiles/verification/ConvertVisibilitySuggestion/testConvertVisibilityConst.php.testConvertVisibilitySuggestionConstFix_04.fixed b/php/php.editor/test/unit/data/testfiles/verification/ConvertVisibilitySuggestion/testConvertVisibilityConst.php.testConvertVisibilitySuggestionConstFix_04.fixed
new file mode 100644
index 0000000..8aa568c
--- /dev/null
+++ b/php/php.editor/test/unit/data/testfiles/verification/ConvertVisibilitySuggestion/testConvertVisibilityConst.php.testConvertVisibilitySuggestionConstFix_04.fixed
@@ -0,0 +1,10 @@
+<?php
+// Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements; and to You under the Apache License, Version 2.0.
+class Visibility {
+
+    const IMPLICIT_CONST = "implicit";
+    public const PUBLIC_CONST = "public";
+    private const PRIVATE_CONST = "private";
+    public const PROTECTED_CONST = "protected";
+
+}
diff --git a/php/php.editor/test/unit/data/testfiles/verification/ConvertVisibilitySuggestion/testConvertVisibilityInterface.php b/php/php.editor/test/unit/data/testfiles/verification/ConvertVisibilitySuggestion/testConvertVisibilityInterface.php
new file mode 100644
index 0000000..3122105
--- /dev/null
+++ b/php/php.editor/test/unit/data/testfiles/verification/ConvertVisibilitySuggestion/testConvertVisibilityInterface.php
@@ -0,0 +1,16 @@
+<?php
+// Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements; and to You under the Apache License, Version 2.0.
+
+interface InterfaceName {
+
+    const INTERFACE_IMPLICIT_CONST = "implicit";
+    public const INTERFACE_PUBLIC_CONST = "implicit";
+
+    function interfaceImplicitMethod($param);
+
+    public function interfacePublicMethod($param);
+
+    static function interfaceImplicitStaticMethod();
+
+    public static function interfaceImplicitPublicStaticMethod();
+}
diff --git a/php/php.editor/test/unit/data/testfiles/verification/ConvertVisibilitySuggestion/testConvertVisibilityInterface.php.testConvertVisibilitySuggestionInterfaceFix_01.fixed b/php/php.editor/test/unit/data/testfiles/verification/ConvertVisibilitySuggestion/testConvertVisibilityInterface.php.testConvertVisibilitySuggestionInterfaceFix_01.fixed
new file mode 100644
index 0000000..893801f
--- /dev/null
+++ b/php/php.editor/test/unit/data/testfiles/verification/ConvertVisibilitySuggestion/testConvertVisibilityInterface.php.testConvertVisibilitySuggestionInterfaceFix_01.fixed
@@ -0,0 +1,16 @@
+<?php
+// Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements; and to You under the Apache License, Version 2.0.
+
+interface InterfaceName {
+
+    public const INTERFACE_IMPLICIT_CONST = "implicit";
+    public const INTERFACE_PUBLIC_CONST = "implicit";
+
+    function interfaceImplicitMethod($param);
+
+    public function interfacePublicMethod($param);
+
+    static function interfaceImplicitStaticMethod();
+
+    public static function interfaceImplicitPublicStaticMethod();
+}
diff --git a/php/php.editor/test/unit/data/testfiles/verification/ConvertVisibilitySuggestion/testConvertVisibilityInterface.php.testConvertVisibilitySuggestionInterfaceFix_02.fixed b/php/php.editor/test/unit/data/testfiles/verification/ConvertVisibilitySuggestion/testConvertVisibilityInterface.php.testConvertVisibilitySuggestionInterfaceFix_02.fixed
new file mode 100644
index 0000000..bbefb90
--- /dev/null
+++ b/php/php.editor/test/unit/data/testfiles/verification/ConvertVisibilitySuggestion/testConvertVisibilityInterface.php.testConvertVisibilitySuggestionInterfaceFix_02.fixed
@@ -0,0 +1,16 @@
+<?php
+// Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements; and to You under the Apache License, Version 2.0.
+
+interface InterfaceName {
+
+    const INTERFACE_IMPLICIT_CONST = "implicit";
+    public const INTERFACE_PUBLIC_CONST = "implicit";
+
+    public function interfaceImplicitMethod($param);
+
+    public function interfacePublicMethod($param);
+
+    static function interfaceImplicitStaticMethod();
+
+    public static function interfaceImplicitPublicStaticMethod();
+}
diff --git a/php/php.editor/test/unit/data/testfiles/verification/ConvertVisibilitySuggestion/testConvertVisibilityInterface.php.testConvertVisibilitySuggestionInterfaceFix_03.fixed b/php/php.editor/test/unit/data/testfiles/verification/ConvertVisibilitySuggestion/testConvertVisibilityInterface.php.testConvertVisibilitySuggestionInterfaceFix_03.fixed
new file mode 100644
index 0000000..e706dc0
--- /dev/null
+++ b/php/php.editor/test/unit/data/testfiles/verification/ConvertVisibilitySuggestion/testConvertVisibilityInterface.php.testConvertVisibilitySuggestionInterfaceFix_03.fixed
@@ -0,0 +1,16 @@
+<?php
+// Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements; and to You under the Apache License, Version 2.0.
+
+interface InterfaceName {
+
+    const INTERFACE_IMPLICIT_CONST = "implicit";
+    public const INTERFACE_PUBLIC_CONST = "implicit";
+
+    function interfaceImplicitMethod($param);
+
+    public function interfacePublicMethod($param);
+
+    public static function interfaceImplicitStaticMethod();
+
+    public static function interfaceImplicitPublicStaticMethod();
+}
diff --git a/php/php.editor/test/unit/data/testfiles/verification/ConvertVisibilitySuggestion/testConvertVisibilityMethod.php b/php/php.editor/test/unit/data/testfiles/verification/ConvertVisibilitySuggestion/testConvertVisibilityMethod.php
new file mode 100644
index 0000000..7522dba
--- /dev/null
+++ b/php/php.editor/test/unit/data/testfiles/verification/ConvertVisibilitySuggestion/testConvertVisibilityMethod.php
@@ -0,0 +1,30 @@
+<?php
+// Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements; and to You under the Apache License, Version 2.0.
+
+class Visibility {
+
+    function implicitMethod($param) {
+    }
+
+    public function publicMethod($param) {
+    }
+
+    private function privateMethod($param) {
+    }
+
+    protected function protectedMethod($param) {
+    }
+
+    static function implicitStaticMethod($param) {
+    }
+
+    public static function publicStaticMethod($param) {
+    }
+
+    private static function privateStaticMethod($param) {
+    }
+
+    protected static function protectedStaticMethod($param) {
+    }
+
+}
diff --git a/php/php.editor/test/unit/data/testfiles/verification/ConvertVisibilitySuggestion/testConvertVisibilityMethod.php.testConvertVisibilitySuggestionMethodFix_01.fixed b/php/php.editor/test/unit/data/testfiles/verification/ConvertVisibilitySuggestion/testConvertVisibilityMethod.php.testConvertVisibilitySuggestionMethodFix_01.fixed
new file mode 100644
index 0000000..4af0879
--- /dev/null
+++ b/php/php.editor/test/unit/data/testfiles/verification/ConvertVisibilitySuggestion/testConvertVisibilityMethod.php.testConvertVisibilitySuggestionMethodFix_01.fixed
@@ -0,0 +1,30 @@
+<?php
+// Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements; and to You under the Apache License, Version 2.0.
+
+class Visibility {
+
+    public function implicitMethod($param) {
+    }
+
+    public function publicMethod($param) {
+    }
+
+    private function privateMethod($param) {
+    }
+
+    protected function protectedMethod($param) {
+    }
+
+    static function implicitStaticMethod($param) {
+    }
+
+    public static function publicStaticMethod($param) {
+    }
+
+    private static function privateStaticMethod($param) {
+    }
+
+    protected static function protectedStaticMethod($param) {
+    }
+
+}
diff --git a/php/php.editor/test/unit/data/testfiles/verification/ConvertVisibilitySuggestion/testConvertVisibilityMethod.php.testConvertVisibilitySuggestionMethodFix_02.fixed b/php/php.editor/test/unit/data/testfiles/verification/ConvertVisibilitySuggestion/testConvertVisibilityMethod.php.testConvertVisibilitySuggestionMethodFix_02.fixed
new file mode 100644
index 0000000..3340d76
--- /dev/null
+++ b/php/php.editor/test/unit/data/testfiles/verification/ConvertVisibilitySuggestion/testConvertVisibilityMethod.php.testConvertVisibilitySuggestionMethodFix_02.fixed
@@ -0,0 +1,30 @@
+<?php
+// Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements; and to You under the Apache License, Version 2.0.
+
+class Visibility {
+
+    function implicitMethod($param) {
+    }
+
+    private function publicMethod($param) {
+    }
+
+    private function privateMethod($param) {
+    }
+
+    protected function protectedMethod($param) {
+    }
+
+    static function implicitStaticMethod($param) {
+    }
+
+    public static function publicStaticMethod($param) {
+    }
+
+    private static function privateStaticMethod($param) {
+    }
+
+    protected static function protectedStaticMethod($param) {
+    }
+
+}
diff --git a/php/php.editor/test/unit/data/testfiles/verification/ConvertVisibilitySuggestion/testConvertVisibilityMethod.php.testConvertVisibilitySuggestionMethodFix_03.fixed b/php/php.editor/test/unit/data/testfiles/verification/ConvertVisibilitySuggestion/testConvertVisibilityMethod.php.testConvertVisibilitySuggestionMethodFix_03.fixed
new file mode 100644
index 0000000..f487e42
--- /dev/null
+++ b/php/php.editor/test/unit/data/testfiles/verification/ConvertVisibilitySuggestion/testConvertVisibilityMethod.php.testConvertVisibilitySuggestionMethodFix_03.fixed
@@ -0,0 +1,30 @@
+<?php
+// Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements; and to You under the Apache License, Version 2.0.
+
+class Visibility {
+
+    function implicitMethod($param) {
+    }
+
+    public function publicMethod($param) {
+    }
+
+    protected function privateMethod($param) {
+    }
+
+    protected function protectedMethod($param) {
+    }
+
+    static function implicitStaticMethod($param) {
+    }
+
+    public static function publicStaticMethod($param) {
+    }
+
+    private static function privateStaticMethod($param) {
+    }
+
+    protected static function protectedStaticMethod($param) {
+    }
+
+}
diff --git a/php/php.editor/test/unit/data/testfiles/verification/ConvertVisibilitySuggestion/testConvertVisibilityMethod.php.testConvertVisibilitySuggestionMethodFix_04.fixed b/php/php.editor/test/unit/data/testfiles/verification/ConvertVisibilitySuggestion/testConvertVisibilityMethod.php.testConvertVisibilitySuggestionMethodFix_04.fixed
new file mode 100644
index 0000000..0dfe923
--- /dev/null
+++ b/php/php.editor/test/unit/data/testfiles/verification/ConvertVisibilitySuggestion/testConvertVisibilityMethod.php.testConvertVisibilitySuggestionMethodFix_04.fixed
@@ -0,0 +1,30 @@
+<?php
+// Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements; and to You under the Apache License, Version 2.0.
+
+class Visibility {
+
+    function implicitMethod($param) {
+    }
+
+    public function publicMethod($param) {
+    }
+
+    private function privateMethod($param) {
+    }
+
+    public function protectedMethod($param) {
+    }
+
+    static function implicitStaticMethod($param) {
+    }
+
+    public static function publicStaticMethod($param) {
+    }
+
+    private static function privateStaticMethod($param) {
+    }
+
+    protected static function protectedStaticMethod($param) {
+    }
+
+}
diff --git a/php/php.editor/test/unit/data/testfiles/verification/ConvertVisibilitySuggestion/testConvertVisibilityMethod.php.testConvertVisibilitySuggestionMethodFix_05.fixed b/php/php.editor/test/unit/data/testfiles/verification/ConvertVisibilitySuggestion/testConvertVisibilityMethod.php.testConvertVisibilitySuggestionMethodFix_05.fixed
new file mode 100644
index 0000000..f8e097e
--- /dev/null
+++ b/php/php.editor/test/unit/data/testfiles/verification/ConvertVisibilitySuggestion/testConvertVisibilityMethod.php.testConvertVisibilitySuggestionMethodFix_05.fixed
@@ -0,0 +1,30 @@
+<?php
+// Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements; and to You under the Apache License, Version 2.0.
+
+class Visibility {
+
+    function implicitMethod($param) {
+    }
+
+    public function publicMethod($param) {
+    }
+
+    private function privateMethod($param) {
+    }
+
+    protected function protectedMethod($param) {
+    }
+
+    public static function implicitStaticMethod($param) {
+    }
+
+    public static function publicStaticMethod($param) {
+    }
+
+    private static function privateStaticMethod($param) {
+    }
+
+    protected static function protectedStaticMethod($param) {
+    }
+
+}
diff --git a/php/php.editor/test/unit/data/testfiles/verification/ConvertVisibilitySuggestion/testConvertVisibilityMethod.php.testConvertVisibilitySuggestionMethodFix_06.fixed b/php/php.editor/test/unit/data/testfiles/verification/ConvertVisibilitySuggestion/testConvertVisibilityMethod.php.testConvertVisibilitySuggestionMethodFix_06.fixed
new file mode 100644
index 0000000..3d2644b
--- /dev/null
+++ b/php/php.editor/test/unit/data/testfiles/verification/ConvertVisibilitySuggestion/testConvertVisibilityMethod.php.testConvertVisibilitySuggestionMethodFix_06.fixed
@@ -0,0 +1,30 @@
+<?php
+// Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements; and to You under the Apache License, Version 2.0.
+
+class Visibility {
+
+    function implicitMethod($param) {
+    }
+
+    public function publicMethod($param) {
+    }
+
+    private function privateMethod($param) {
+    }
+
+    protected function protectedMethod($param) {
+    }
+
+    static function implicitStaticMethod($param) {
+    }
+
+    private static function publicStaticMethod($param) {
+    }
+
+    private static function privateStaticMethod($param) {
+    }
+
+    protected static function protectedStaticMethod($param) {
+    }
+
+}
diff --git a/php/php.editor/test/unit/data/testfiles/verification/ConvertVisibilitySuggestion/testConvertVisibilityMethod.php.testConvertVisibilitySuggestionMethodFix_07.fixed b/php/php.editor/test/unit/data/testfiles/verification/ConvertVisibilitySuggestion/testConvertVisibilityMethod.php.testConvertVisibilitySuggestionMethodFix_07.fixed
new file mode 100644
index 0000000..556d756
--- /dev/null
+++ b/php/php.editor/test/unit/data/testfiles/verification/ConvertVisibilitySuggestion/testConvertVisibilityMethod.php.testConvertVisibilitySuggestionMethodFix_07.fixed
@@ -0,0 +1,30 @@
+<?php
+// Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements; and to You under the Apache License, Version 2.0.
+
+class Visibility {
+
+    function implicitMethod($param) {
+    }
+
+    public function publicMethod($param) {
+    }
+
+    private function privateMethod($param) {
+    }
+
+    protected function protectedMethod($param) {
+    }
+
+    static function implicitStaticMethod($param) {
+    }
+
+    public static function publicStaticMethod($param) {
+    }
+
+    public static function privateStaticMethod($param) {
+    }
+
+    protected static function protectedStaticMethod($param) {
+    }
+
+}
diff --git a/php/php.editor/test/unit/data/testfiles/verification/ConvertVisibilitySuggestion/testConvertVisibilityMethod.php.testConvertVisibilitySuggestionMethodFix_08.fixed b/php/php.editor/test/unit/data/testfiles/verification/ConvertVisibilitySuggestion/testConvertVisibilityMethod.php.testConvertVisibilitySuggestionMethodFix_08.fixed
new file mode 100644
index 0000000..9c32a7c
--- /dev/null
+++ b/php/php.editor/test/unit/data/testfiles/verification/ConvertVisibilitySuggestion/testConvertVisibilityMethod.php.testConvertVisibilitySuggestionMethodFix_08.fixed
@@ -0,0 +1,30 @@
+<?php
+// Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements; and to You under the Apache License, Version 2.0.
+
+class Visibility {
+
+    function implicitMethod($param) {
+    }
+
+    public function publicMethod($param) {
+    }
+
+    private function privateMethod($param) {
+    }
+
+    protected function protectedMethod($param) {
+    }
+
+    static function implicitStaticMethod($param) {
+    }
+
+    public static function publicStaticMethod($param) {
+    }
+
+    private static function privateStaticMethod($param) {
+    }
+
+    public static function protectedStaticMethod($param) {
+    }
+
+}
diff --git a/php/php.editor/test/unit/data/testfiles/verification/ConvertVisibilitySuggestion/testConvertVisibilityProperty.php b/php/php.editor/test/unit/data/testfiles/verification/ConvertVisibilitySuggestion/testConvertVisibilityProperty.php
new file mode 100644
index 0000000..357ba7c
--- /dev/null
+++ b/php/php.editor/test/unit/data/testfiles/verification/ConvertVisibilitySuggestion/testConvertVisibilityProperty.php
@@ -0,0 +1,15 @@
+<?php
+// Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements; and to You under the Apache License, Version 2.0.
+class Visibility {
+
+    var $var = "public";
+    public $public = "public";
+    public $public1 = "public", $public2 = "public";
+    private $private = "private";
+    protected $protected = "protected";
+    public static $publicStatic = "public";
+    public static $publicStatic1 = "public", $publicStatic2 = "public";
+    private static $privateStatic = "private";
+    protected static $protectedStatic = "protected";
+
+}
diff --git a/php/php.editor/test/unit/data/testfiles/verification/ConvertVisibilitySuggestion/testConvertVisibilityProperty.php.testConvertVisibilitySuggestionPropertyFix_01.fixed b/php/php.editor/test/unit/data/testfiles/verification/ConvertVisibilitySuggestion/testConvertVisibilityProperty.php.testConvertVisibilitySuggestionPropertyFix_01.fixed
new file mode 100644
index 0000000..d5e6f4b
--- /dev/null
+++ b/php/php.editor/test/unit/data/testfiles/verification/ConvertVisibilitySuggestion/testConvertVisibilityProperty.php.testConvertVisibilitySuggestionPropertyFix_01.fixed
@@ -0,0 +1,15 @@
+<?php
+// Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements; and to You under the Apache License, Version 2.0.
+class Visibility {
+
+    public $var = "public";
+    public $public = "public";
+    public $public1 = "public", $public2 = "public";
+    private $private = "private";
+    protected $protected = "protected";
+    public static $publicStatic = "public";
+    public static $publicStatic1 = "public", $publicStatic2 = "public";
+    private static $privateStatic = "private";
+    protected static $protectedStatic = "protected";
+
+}
diff --git a/php/php.editor/test/unit/data/testfiles/verification/ConvertVisibilitySuggestion/testConvertVisibilityProperty.php.testConvertVisibilitySuggestionPropertyFix_02.fixed b/php/php.editor/test/unit/data/testfiles/verification/ConvertVisibilitySuggestion/testConvertVisibilityProperty.php.testConvertVisibilitySuggestionPropertyFix_02.fixed
new file mode 100644
index 0000000..11b79dd
--- /dev/null
+++ b/php/php.editor/test/unit/data/testfiles/verification/ConvertVisibilitySuggestion/testConvertVisibilityProperty.php.testConvertVisibilitySuggestionPropertyFix_02.fixed
@@ -0,0 +1,15 @@
+<?php
+// Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements; and to You under the Apache License, Version 2.0.
+class Visibility {
+
+    var $var = "public";
+    private $public = "public";
+    public $public1 = "public", $public2 = "public";
+    private $private = "private";
+    protected $protected = "protected";
+    public static $publicStatic = "public";
+    public static $publicStatic1 = "public", $publicStatic2 = "public";
+    private static $privateStatic = "private";
+    protected static $protectedStatic = "protected";
+
+}
diff --git a/php/php.editor/test/unit/data/testfiles/verification/ConvertVisibilitySuggestion/testConvertVisibilityProperty.php.testConvertVisibilitySuggestionPropertyFix_03.fixed b/php/php.editor/test/unit/data/testfiles/verification/ConvertVisibilitySuggestion/testConvertVisibilityProperty.php.testConvertVisibilitySuggestionPropertyFix_03.fixed
new file mode 100644
index 0000000..36f0f2c
--- /dev/null
+++ b/php/php.editor/test/unit/data/testfiles/verification/ConvertVisibilitySuggestion/testConvertVisibilityProperty.php.testConvertVisibilitySuggestionPropertyFix_03.fixed
@@ -0,0 +1,15 @@
+<?php
+// Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements; and to You under the Apache License, Version 2.0.
+class Visibility {
+
+    var $var = "public";
+    public $public = "public";
+    private $public1 = "public", $public2 = "public";
+    private $private = "private";
+    protected $protected = "protected";
+    public static $publicStatic = "public";
+    public static $publicStatic1 = "public", $publicStatic2 = "public";
+    private static $privateStatic = "private";
+    protected static $protectedStatic = "protected";
+
+}
diff --git a/php/php.editor/test/unit/data/testfiles/verification/ConvertVisibilitySuggestion/testConvertVisibilityProperty.php.testConvertVisibilitySuggestionPropertyFix_04.fixed b/php/php.editor/test/unit/data/testfiles/verification/ConvertVisibilitySuggestion/testConvertVisibilityProperty.php.testConvertVisibilitySuggestionPropertyFix_04.fixed
new file mode 100644
index 0000000..6cfff85
--- /dev/null
+++ b/php/php.editor/test/unit/data/testfiles/verification/ConvertVisibilitySuggestion/testConvertVisibilityProperty.php.testConvertVisibilitySuggestionPropertyFix_04.fixed
@@ -0,0 +1,15 @@
+<?php
+// Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements; and to You under the Apache License, Version 2.0.
+class Visibility {
+
+    var $var = "public";
+    public $public = "public";
+    public $public1 = "public", $public2 = "public";
+    public $private = "private";
+    protected $protected = "protected";
+    public static $publicStatic = "public";
+    public static $publicStatic1 = "public", $publicStatic2 = "public";
+    private static $privateStatic = "private";
+    protected static $protectedStatic = "protected";
+
+}
diff --git a/php/php.editor/test/unit/data/testfiles/verification/ConvertVisibilitySuggestion/testConvertVisibilityProperty.php.testConvertVisibilitySuggestionPropertyFix_05.fixed b/php/php.editor/test/unit/data/testfiles/verification/ConvertVisibilitySuggestion/testConvertVisibilityProperty.php.testConvertVisibilitySuggestionPropertyFix_05.fixed
new file mode 100644
index 0000000..4f384bd
--- /dev/null
+++ b/php/php.editor/test/unit/data/testfiles/verification/ConvertVisibilitySuggestion/testConvertVisibilityProperty.php.testConvertVisibilitySuggestionPropertyFix_05.fixed
@@ -0,0 +1,15 @@
+<?php
+// Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements; and to You under the Apache License, Version 2.0.
+class Visibility {
+
+    var $var = "public";
+    public $public = "public";
+    public $public1 = "public", $public2 = "public";
+    private $private = "private";
+    public $protected = "protected";
+    public static $publicStatic = "public";
+    public static $publicStatic1 = "public", $publicStatic2 = "public";
+    private static $privateStatic = "private";
+    protected static $protectedStatic = "protected";
+
+}
diff --git a/php/php.editor/test/unit/data/testfiles/verification/ConvertVisibilitySuggestion/testConvertVisibilityProperty.php.testConvertVisibilitySuggestionPropertyFix_06.fixed b/php/php.editor/test/unit/data/testfiles/verification/ConvertVisibilitySuggestion/testConvertVisibilityProperty.php.testConvertVisibilitySuggestionPropertyFix_06.fixed
new file mode 100644
index 0000000..e7d4279
--- /dev/null
+++ b/php/php.editor/test/unit/data/testfiles/verification/ConvertVisibilitySuggestion/testConvertVisibilityProperty.php.testConvertVisibilitySuggestionPropertyFix_06.fixed
@@ -0,0 +1,15 @@
+<?php
+// Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements; and to You under the Apache License, Version 2.0.
+class Visibility {
+
+    var $var = "public";
+    public $public = "public";
+    public $public1 = "public", $public2 = "public";
+    private $private = "private";
+    protected $protected = "protected";
+    protected static $publicStatic = "public";
+    public static $publicStatic1 = "public", $publicStatic2 = "public";
+    private static $privateStatic = "private";
+    protected static $protectedStatic = "protected";
+
+}
diff --git a/php/php.editor/test/unit/data/testfiles/verification/ConvertVisibilitySuggestion/testConvertVisibilityProperty.php.testConvertVisibilitySuggestionPropertyFix_07.fixed b/php/php.editor/test/unit/data/testfiles/verification/ConvertVisibilitySuggestion/testConvertVisibilityProperty.php.testConvertVisibilitySuggestionPropertyFix_07.fixed
new file mode 100644
index 0000000..11ab46f
--- /dev/null
+++ b/php/php.editor/test/unit/data/testfiles/verification/ConvertVisibilitySuggestion/testConvertVisibilityProperty.php.testConvertVisibilitySuggestionPropertyFix_07.fixed
@@ -0,0 +1,15 @@
+<?php
+// Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements; and to You under the Apache License, Version 2.0.
+class Visibility {
+
+    var $var = "public";
+    public $public = "public";
+    public $public1 = "public", $public2 = "public";
+    private $private = "private";
+    protected $protected = "protected";
+    public static $publicStatic = "public";
+    private static $publicStatic1 = "public", $publicStatic2 = "public";
+    private static $privateStatic = "private";
+    protected static $protectedStatic = "protected";
+
+}
diff --git a/php/php.editor/test/unit/data/testfiles/verification/ConvertVisibilitySuggestion/testConvertVisibilityProperty.php.testConvertVisibilitySuggestionPropertyFix_08.fixed b/php/php.editor/test/unit/data/testfiles/verification/ConvertVisibilitySuggestion/testConvertVisibilityProperty.php.testConvertVisibilitySuggestionPropertyFix_08.fixed
new file mode 100644
index 0000000..96c31e6
--- /dev/null
+++ b/php/php.editor/test/unit/data/testfiles/verification/ConvertVisibilitySuggestion/testConvertVisibilityProperty.php.testConvertVisibilitySuggestionPropertyFix_08.fixed
@@ -0,0 +1,15 @@
+<?php
+// Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements; and to You under the Apache License, Version 2.0.
+class Visibility {
+
+    var $var = "public";
+    public $public = "public";
+    public $public1 = "public", $public2 = "public";
+    private $private = "private";
+    protected $protected = "protected";
+    public static $publicStatic = "public";
+    public static $publicStatic1 = "public", $publicStatic2 = "public";
+    public static $privateStatic = "private";
+    protected static $protectedStatic = "protected";
+
+}
diff --git a/php/php.editor/test/unit/data/testfiles/verification/ConvertVisibilitySuggestion/testConvertVisibilityProperty.php.testConvertVisibilitySuggestionPropertyFix_09.fixed b/php/php.editor/test/unit/data/testfiles/verification/ConvertVisibilitySuggestion/testConvertVisibilityProperty.php.testConvertVisibilitySuggestionPropertyFix_09.fixed
new file mode 100644
index 0000000..a8d635b
--- /dev/null
+++ b/php/php.editor/test/unit/data/testfiles/verification/ConvertVisibilitySuggestion/testConvertVisibilityProperty.php.testConvertVisibilitySuggestionPropertyFix_09.fixed
@@ -0,0 +1,15 @@
+<?php
+// Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements; and to You under the Apache License, Version 2.0.
+class Visibility {
+
+    var $var = "public";
+    public $public = "public";
+    public $public1 = "public", $public2 = "public";
+    private $private = "private";
+    protected $protected = "protected";
+    public static $publicStatic = "public";
+    public static $publicStatic1 = "public", $publicStatic2 = "public";
+    private static $privateStatic = "private";
+    private static $protectedStatic = "protected";
+
+}
diff --git a/php/php.editor/test/unit/src/org/netbeans/modules/php/editor/verification/ConvertVisibilitySuggestionTest.java b/php/php.editor/test/unit/src/org/netbeans/modules/php/editor/verification/ConvertVisibilitySuggestionTest.java
new file mode 100644
index 0000000..8f7ce1b
--- /dev/null
+++ b/php/php.editor/test/unit/src/org/netbeans/modules/php/editor/verification/ConvertVisibilitySuggestionTest.java
@@ -0,0 +1,289 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you 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 org.netbeans.modules.php.editor.verification;
+
+public class ConvertVisibilitySuggestionTest extends PHPHintsTestBase {
+
+    public ConvertVisibilitySuggestionTest(String testName) {
+        super(testName);
+    }
+
+    @Override
+    protected String getTestDirectory() {
+        return TEST_DIRECTORY + "ConvertVisibilitySuggestion/";
+    }
+
+    public void testConvertVisibilitySuggestionProperty_01() throws Exception {
+        checkHints(new ConvertVisibilitySuggestion(), "testConvertVisibility.php", "    public $public = ^\"public\";");
+    }
+
+    public void testConvertVisibilitySuggestionProperty_02() throws Exception {
+        checkHints(new ConvertVisibilitySuggestion(), "testConvertVisibility.php", "    public $public1 = \"public\", ^$public2 = \"public\";");
+    }
+
+    public void testConvertVisibilitySuggestionProperty_03() throws Exception {
+        checkHints(new ConvertVisibilitySuggestion(), "testConvertVisibility.php", "    private $privat^e = \"private\";");
+    }
+
+    public void testConvertVisibilitySuggestionProperty_04() throws Exception {
+        checkHints(new ConvertVisibilitySuggestion(), "testConvertVisibility.php", "    protected $prote^cted = \"protected\";");
+    }
+
+    public void testConvertVisibilitySuggestionProperty_05() throws Exception {
+        checkHints(new ConvertVisibilitySuggestion(), "testConvertVisibility.php", "    public static $^publicStatic = \"public\";");
+    }
+
+    public void testConvertVisibilitySuggestionProperty_06() throws Exception {
+        checkHints(new ConvertVisibilitySuggestion(), "testConvertVisibility.php", "    public static ^$publicStatic1 = \"public\", $publicStatic2 = \"public\";");
+    }
+
+    public void testConvertVisibilitySuggestionProperty_07() throws Exception {
+        checkHints(new ConvertVisibilitySuggestion(), "testConvertVisibility.php", "    private static $privateStatic = \"privat^e\";");
+    }
+
+    public void testConvertVisibilitySuggestionProperty_08() throws Exception {
+        checkHints(new ConvertVisibilitySuggestion(), "testConvertVisibility.php", "    protected static $protectedStatic = \"protect^ed\";");
+    }
+
+    public void testConvertVisibilitySuggestionProperty_09() throws Exception {
+        checkHints(new ConvertVisibilitySuggestion(), "testConvertVisibility.php", "    var $var ^= \"public\";");
+    }
+
+    public void testConvertVisibilitySuggestionConst_01() throws Exception {
+        checkHints(new ConvertVisibilitySuggestion(), "testConvertVisibility.php", "    const IMPLICIT_CO^NST = \"implicit\";");
+    }
+
+    public void testConvertVisibilitySuggestionConst_02() throws Exception {
+        checkHints(new ConvertVisibilitySuggestion(), "testConvertVisibility.php", "    public const PUBLIC_CONST = \"pub^lic\";");
+    }
+
+    public void testConvertVisibilitySuggestionConst_03() throws Exception {
+        checkHints(new ConvertVisibilitySuggestion(), "testConvertVisibility.php", "    private const PRIVATE_CONST = \"priva^te\";");
+    }
+
+    public void testConvertVisibilitySuggestionConst_04() throws Exception {
+        checkHints(new ConvertVisibilitySuggestion(), "testConvertVisibility.php", "    protected const ^PROTECTED_CONST = \"protected\";");
+    }
+
+    public void testConvertVisibilitySuggestionMethod_01() throws Exception {
+        checkHints(new ConvertVisibilitySuggestion(), "testConvertVisibility.php", "    function implicitMethod($param)^ {");
+    }
+
+    public void testConvertVisibilitySuggestionMethod_02() throws Exception {
+        checkHints(new ConvertVisibilitySuggestion(), "testConvertVisibility.php", "    public function publicMethod($para^m) {");
+    }
+
+    public void testConvertVisibilitySuggestionMethod_03() throws Exception {
+        checkHints(new ConvertVisibilitySuggestion(), "testConvertVisibility.php", "    private function privateMethod($param) {^");
+    }
+
+    public void testConvertVisibilitySuggestionMethod_04() throws Exception {
+        checkHints(new ConvertVisibilitySuggestion(), "testConvertVisibility.php", "    protected ^function protectedMethod($param) {");
+    }
+
+    public void testConvertVisibilitySuggestionMethod_05() throws Exception {
+        checkHints(new ConvertVisibilitySuggestion(), "testConvertVisibility.php", "    static function implicitStaticMethod($pa^ram) {");
+    }
+
+    public void testConvertVisibilitySuggestionMethod_06() throws Exception {
+        checkHints(new ConvertVisibilitySuggestion(), "testConvertVisibility.php", "    public static function publicStaticMe^thod($param) {");
+    }
+
+    public void testConvertVisibilitySuggestionMethod_07() throws Exception {
+        checkHints(new ConvertVisibilitySuggestion(), "testConvertVisibility.php", "    private static ^function privateStaticMethod($param) {");
+    }
+
+    public void testConvertVisibilitySuggestionMethod_08() throws Exception {
+        checkHints(new ConvertVisibilitySuggestion(), "testConvertVisibility.php", "    prote^cted static function protectedStaticMethod($param) {");
+    }
+
+    public void testConvertVisibilitySuggestionInterfaceConst_01() throws Exception {
+        checkHints(new ConvertVisibilitySuggestion(), "testConvertVisibility.php", "    const INTERFACE_IMPLICIT_CONST = \"implici^t\";");
+    }
+
+    public void testConvertVisibilitySuggestionInterfaceConst_02() throws Exception {
+        checkHints(new ConvertVisibilitySuggestion(), "testConvertVisibility.php", "    public const INTERFACE_P^UBLIC_CONST = \"implicit\";");
+    }
+
+    public void testConvertVisibilitySuggestionInterfaceMethod_01() throws Exception {
+        checkHints(new ConvertVisibilitySuggestion(), "testConvertVisibility.php", "    function interfaceImplicitMethod($para^m);");
+    }
+
+    public void testConvertVisibilitySuggestionInterfaceMethod_02() throws Exception {
+        checkHints(new ConvertVisibilitySuggestion(), "testConvertVisibility.php", "    public ^function interfacePublicMethod($param);");
+    }
+
+    public void testConvertVisibilitySuggestionInterfaceMethod_03() throws Exception {
+        checkHints(new ConvertVisibilitySuggestion(), "testConvertVisibility.php", "    static function interfaceImplicitStaticMeth^od();");
+    }
+
+    public void testConvertVisibilitySuggestionInterfaceMethod_04() throws Exception {
+        checkHints(new ConvertVisibilitySuggestion(), "testConvertVisibility.php", "    public ^static function interfaceImplicitPublicStaticMethod();");
+    }
+
+    public void testConvertVisibilitySuggestionGlobalConst_01() throws Exception {
+        checkHints(new ConvertVisibilitySuggestion(), "testConvertVisibility.php", "const CON^STANT = \"global\";");
+    }
+
+    public void testConvertVisibilitySuggestionAbstractMethod_01() throws Exception {
+        checkHints(new ConvertVisibilitySuggestion(), "testConvertVisibility.php", "    abstract function abstractImplici^tPublic();");
+    }
+
+    public void testConvertVisibilitySuggestionAbstractMethod_02() throws Exception {
+        checkHints(new ConvertVisibilitySuggestion(), "testConvertVisibility.php", "    abstract public function abstractP^ublic();");
+    }
+
+    public void testConvertVisibilitySuggestionAbstractMethod_03() throws Exception {
+        checkHints(new ConvertVisibilitySuggestion(), "testConvertVisibility.php", "    abstract protected ^function abstractProtected();");
+    }
+
+    public void testConvertVisibilitySuggestionAbstractMethod_04() throws Exception {
+        checkHints(new ConvertVisibilitySuggestion(), "testConvertVisibility.php", "    abstract static function abstractImplicitPu^blicStatic();");
+    }
+
+    public void testConvertVisibilitySuggestionAbstractMethod_05() throws Exception {
+        checkHints(new ConvertVisibilitySuggestion(), "testConvertVisibility.php", "    abstract ^public static function abstractPublicStatic();");
+    }
+
+    public void testConvertVisibilitySuggestionAbstractMethod_06() throws Exception {
+        checkHints(new ConvertVisibilitySuggestion(), "testConvertVisibility.php", "    abstract protected static function abstractProtectedStat^ic();");
+    }
+
+    // Fix
+    public void testConvertVisibilitySuggestionPropertyFix_01() throws Exception {
+        applyHint(new ConvertVisibilitySuggestion(), "testConvertVisibilityProperty.php", "    var ^$var = \"public\";", "Convert Visibility");
+    }
+
+    public void testConvertVisibilitySuggestionPropertyFix_02() throws Exception {
+        applyHint(new ConvertVisibilitySuggestion(), "testConvertVisibilityProperty.php", "    public ^$public = \"public\";", "Convert Visibility");
+    }
+
+    public void testConvertVisibilitySuggestionPropertyFix_03() throws Exception {
+        applyHint(new ConvertVisibilitySuggestion(), "testConvertVisibilityProperty.php", "    public $public1 = \"public\", $public2^ = \"public\";", "Convert Visibility");
+    }
+
+    public void testConvertVisibilitySuggestionPropertyFix_04() throws Exception {
+        applyHint(new ConvertVisibilitySuggestion(), "testConvertVisibilityProperty.php", "    private ^$private = \"private\";", "Convert Visibility");
+    }
+
+    public void testConvertVisibilitySuggestionPropertyFix_05() throws Exception {
+        applyHint(new ConvertVisibilitySuggestion(), "testConvertVisibilityProperty.php", "    protected $protected = \"pr^otected\";", "Convert Visibility");
+    }
+
+    public void testConvertVisibilitySuggestionPropertyFix_06() throws Exception {
+        applyHint(new ConvertVisibilitySuggestion(), "testConvertVisibilityProperty.php", "    public static $publicStat^ic = \"public\";", "protected");
+    }
+
+    public void testConvertVisibilitySuggestionPropertyFix_07() throws Exception {
+        applyHint(new ConvertVisibilitySuggestion(), "testConvertVisibilityProperty.php", "    public static $publicStatic1 = \"public\", $publicStatic2 ^= \"public\";", "private");
+    }
+
+    public void testConvertVisibilitySuggestionPropertyFix_08() throws Exception {
+        applyHint(new ConvertVisibilitySuggestion(), "testConvertVisibilityProperty.php", "    private static $privateStatic = \"priva^te\";", "Convert Visibility");
+    }
+
+    public void testConvertVisibilitySuggestionPropertyFix_09() throws Exception {
+        applyHint(new ConvertVisibilitySuggestion(), "testConvertVisibilityProperty.php", "    protected ^static $protectedStatic = \"protected\";", "private");
+    }
+
+    public void testConvertVisibilitySuggestionConstFix_01() throws Exception {
+        applyHint(new ConvertVisibilitySuggestion(), "testConvertVisibilityConst.php", "    const IMPLICIT_CO^NST = \"implicit\";", "Convert Visibility");
+    }
+
+    public void testConvertVisibilitySuggestionConstFix_02() throws Exception {
+        applyHint(new ConvertVisibilitySuggestion(), "testConvertVisibilityConst.php", "    public const PUBLIC_CONST = ^\"public\";", "Convert Visibility");
+    }
+
+    public void testConvertVisibilitySuggestionConstFix_03() throws Exception {
+        applyHint(new ConvertVisibilitySuggestion(), "testConvertVisibilityConst.php", "    private const PRIVATE_CONST^ = \"private\";", "protected");
+    }
+
+    public void testConvertVisibilitySuggestionConstFix_04() throws Exception {
+        applyHint(new ConvertVisibilitySuggestion(), "testConvertVisibilityConst.php", "    protected const PROTECTED_^CONST = \"protected\";", "Convert Visibility");
+    }
+
+    public void testConvertVisibilitySuggestionMethodFix_01() throws Exception {
+        applyHint(new ConvertVisibilitySuggestion(), "testConvertVisibilityMethod.php", "    function implicitMeth^od($param) {", "Convert Visibility");
+    }
+
+    public void testConvertVisibilitySuggestionMethodFix_02() throws Exception {
+        applyHint(new ConvertVisibilitySuggestion(), "testConvertVisibilityMethod.php", "    public function publicMethod($^param) {", "Convert Visibility");
+    }
+
+    public void testConvertVisibilitySuggestionMethodFix_03() throws Exception {
+        applyHint(new ConvertVisibilitySuggestion(), "testConvertVisibilityMethod.php", "    private function privat^eMethod($param) {", "protected");
+    }
+
+    public void testConvertVisibilitySuggestionMethodFix_04() throws Exception {
+        applyHint(new ConvertVisibilitySuggestion(), "testConvertVisibilityMethod.php", "    protected fu^nction protectedMethod($param) {", "Convert Visibility");
+    }
+
+    public void testConvertVisibilitySuggestionMethodFix_05() throws Exception {
+        applyHint(new ConvertVisibilitySuggestion(), "testConvertVisibilityMethod.php", "    static function implicitStaticMethod($para^m) {", "Convert Visibility");
+    }
+
+    public void testConvertVisibilitySuggestionMethodFix_06() throws Exception {
+        applyHint(new ConvertVisibilitySuggestion(), "testConvertVisibilityMethod.php", "    public static fun^ction publicStaticMethod($param) {", "Convert Visibility");
+    }
+
+    public void testConvertVisibilitySuggestionMethodFix_07() throws Exception {
+        applyHint(new ConvertVisibilitySuggestion(), "testConvertVisibilityMethod.php", "    private static function privateStat^icMethod($param) {", "Convert Visibility");
+    }
+
+    public void testConvertVisibilitySuggestionMethodFix_08() throws Exception {
+        applyHint(new ConvertVisibilitySuggestion(), "testConvertVisibilityMethod.php", "    protected static function protecte^dStaticMethod($param) {", "Convert Visibility");
+    }
+
+    public void testConvertVisibilitySuggestionInterfaceFix_01() throws Exception {
+        applyHint(new ConvertVisibilitySuggestion(), "testConvertVisibilityInterface.php", "    const INTERFACE_IMPLICIT_CONST = \"impli^cit\";", "Convert Visibility");
+    }
+
+    public void testConvertVisibilitySuggestionInterfaceFix_02() throws Exception {
+        applyHint(new ConvertVisibilitySuggestion(), "testConvertVisibilityInterface.php", "    function interfaceImp^licitMethod($param);", "Convert Visibility");
+    }
+
+    public void testConvertVisibilitySuggestionInterfaceFix_03() throws Exception {
+        applyHint(new ConvertVisibilitySuggestion(), "testConvertVisibilityInterface.php", "    static function interfaceImplicitStaticMetho^d();", "Convert Visibility");
+    }
+
+    public void testConvertVisibilitySuggestionAbstractClassFix_01() throws Exception {
+        applyHint(new ConvertVisibilitySuggestion(), "testConvertVisibilityAbstractClass.php", "    abstract function abst^ractImplicitPublic();", "Convert Visibility");
+    }
+
+    public void testConvertVisibilitySuggestionAbstractClassFix_02() throws Exception {
+        applyHint(new ConvertVisibilitySuggestion(), "testConvertVisibilityAbstractClass.php", "    abstract public ^function abstractPublic();", "Convert Visibility");
+    }
+
+    public void testConvertVisibilitySuggestionAbstractClassFix_03() throws Exception {
+        applyHint(new ConvertVisibilitySuggestion(), "testConvertVisibilityAbstractClass.php", "    abstract protected function ^abstractProtected();", "Convert Visibility");
+    }
+
+    public void testConvertVisibilitySuggestionAbstractClassFix_04() throws Exception {
+        applyHint(new ConvertVisibilitySuggestion(), "testConvertVisibilityAbstractClass.php", "    abstract ^static function abstractImplicitPublicStatic();", "protected");
+    }
+
+    public void testConvertVisibilitySuggestionAbstractClassFix_05() throws Exception {
+        applyHint(new ConvertVisibilitySuggestion(), "testConvertVisibilityAbstractClass.php", "    abstract public s^tatic function abstractPublicStatic();", "Convert Visibility");
+    }
+
+    public void testConvertVisibilitySuggestionAbstractClassFix_06() throws Exception {
+        applyHint(new ConvertVisibilitySuggestion(), "testConvertVisibilityAbstractClass.php", "    abstract protected static function abs^tractProtectedStatic();", "Convert Visibility");
+    }
+
+}


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@netbeans.apache.org
For additional commands, e-mail: commits-help@netbeans.apache.org

For further information about the NetBeans mailing lists, visit:
https://cwiki.apache.org/confluence/display/NETBEANS/Mailing+lists