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 c78cd55  [NETBEANS-3413] Implicit inheritance of PHPDoc descriptions
     new b8fa73e  Merge pull request #2122 from KacerCZ/netbeans-3413
c78cd55 is described below

commit c78cd553fcd8246154aa8b738feaf83f7b9a6649
Author: Tomas Prochazka <ka...@razdva.cz>
AuthorDate: Sat May 2 10:02:28 2020 +0200

    [NETBEANS-3413] Implicit inheritance of PHPDoc descriptions
    
    Uses description of inherited element when no PHPDoc is present.
---
 .../modules/php/editor/completion/DocRenderer.java | 28 ++++++++++++++--------
 .../php/editor/completion/DocRendererTest.java     |  2 +-
 2 files changed, 19 insertions(+), 11 deletions(-)

diff --git 
a/php/php.editor/src/org/netbeans/modules/php/editor/completion/DocRenderer.java
 
b/php/php.editor/src/org/netbeans/modules/php/editor/completion/DocRenderer.java
index cf576b9..5886277 100644
--- 
a/php/php.editor/src/org/netbeans/modules/php/editor/completion/DocRenderer.java
+++ 
b/php/php.editor/src/org/netbeans/modules/php/editor/completion/DocRenderer.java
@@ -32,6 +32,7 @@ import java.util.logging.Logger;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 import org.netbeans.api.annotations.common.CheckForNull;
+import org.netbeans.api.annotations.common.NullAllowed;
 import org.netbeans.api.lexer.Token;
 import org.netbeans.api.lexer.TokenSequence;
 import org.netbeans.api.project.FileOwnerQuery;
@@ -242,9 +243,10 @@ final class DocRenderer {
         private final PhpElement indexedElement;
         private final List<String> links = new ArrayList<>();
         private final ASTNode node;
+        @NullAllowed
         private PHPDocBlock phpDocBlock;
 
-        public PHPDocExtractor(CCDocHtmlFormatter header, PhpElement 
indexedElement, ASTNode node, PHPDocBlock phpDocBlock) {
+        public PHPDocExtractor(CCDocHtmlFormatter header, PhpElement 
indexedElement, ASTNode node, @NullAllowed PHPDocBlock phpDocBlock) {
             this.header = header;
             this.indexedElement = indexedElement;
             this.node = node;
@@ -380,9 +382,6 @@ final class DocRenderer {
         }
 
         private void extractPHPDocBlock() {
-            if (phpDocBlock == null) {
-                return;
-            }
             List<PHPDocVarTypeTag> params = new ArrayList<>();
             List<PHPDocTypeTag> returns = new ArrayList<>();
             StringBuilder others = new StringBuilder();
@@ -391,10 +390,11 @@ final class DocRenderer {
             List<PhpElement> inheritedElements = getInheritedElements();
             List<PHPDocBlock> inheritedComments = 
getInheritedComments(inheritedElements);
 
-            String description = phpDocBlock.getDescription();
+            String description = phpDocBlock == null ? null : 
phpDocBlock.getDescription();
             description = composeDescription(description, inheritedComments);
 
-            for (PHPDocTag tag : phpDocBlock.getTags()) {
+            List<PHPDocTag> tags = phpDocBlock == null ? 
Collections.emptyList() : phpDocBlock.getTags();
+            for (PHPDocTag tag : tags) {
                 AnnotationParsedLine kind = tag.getKind();
                 if (kind.equals(PHPDocTag.Type.PARAM)) {
                     PHPDocVarTypeTag paramTag = (PHPDocVarTypeTag) tag;
@@ -574,7 +574,11 @@ final class DocRenderer {
             return ret;
         }
 
-        private String replaceInheritdocForDescription(String description, 
String parentDescription) {
+        @CheckForNull
+        private String replaceInheritdocForDescription(@NullAllowed String 
description, @NullAllowed String parentDescription) {
+            if (description == null) {
+                return parentDescription;
+            }
             if (description != null && hasInlineInheritdoc(description)) {
                 if (parentDescription != null && 
!parentDescription.trim().isEmpty()) {
                     if 
(INLINE_INHERITDOC_PATTERN.matcher(description.trim()).matches()) {
@@ -717,7 +721,7 @@ final class DocRenderer {
 
         private boolean needInheritedElements() {
             if (phpDocBlock == null) {
-                return false;
+                return true;
             }
             String description = phpDocBlock.getDescription();
             if (hasInlineInheritdoc(description)) {
@@ -752,7 +756,7 @@ final class DocRenderer {
             for (PhpElement element : elements) {
                 PHPDocBlock docBlock = getPhpDocBlock(element);
                 if (docBlock != null) {
-                    if (isOnlyInheritdoc(phpDocBlock)) {
+                    if (phpDocBlock == null || isOnlyInheritdoc(phpDocBlock)) {
                         phpDocBlock = docBlock;
                     } else {
                         inheritedComments.add(docBlock);
@@ -767,7 +771,11 @@ final class DocRenderer {
                     && phpDocBlock.getTags().isEmpty();
         }
 
-        static String replaceInlineInheritdoc(String description, String 
inheritdoc) {
+        @CheckForNull
+        static String replaceInlineInheritdoc(@NullAllowed String description, 
@NullAllowed String inheritdoc) {
+             if (description == null && inheritdoc != null) {
+                return inheritdoc;
+            }
             if (description == null || inheritdoc == null) {
                 return description;
             }
diff --git 
a/php/php.editor/test/unit/src/org/netbeans/modules/php/editor/completion/DocRendererTest.java
 
b/php/php.editor/test/unit/src/org/netbeans/modules/php/editor/completion/DocRendererTest.java
index 8b9fe16..8b42c96 100644
--- 
a/php/php.editor/test/unit/src/org/netbeans/modules/php/editor/completion/DocRendererTest.java
+++ 
b/php/php.editor/test/unit/src/org/netbeans/modules/php/editor/completion/DocRendererTest.java
@@ -258,7 +258,7 @@ public class DocRendererTest extends PHPTestBase {
 
     public void testReplaceInlineInheritdoc_04() {
         checkReplaceInlineInheritdoc(
-                null,
+                "Parent Description",
                 null,
                 "Parent Description"
         );


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

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

Reply via email to