Hello community,
here is the log from the commit of package kdevelop5-plugin-php for
openSUSE:Factory checked in at 2019-01-15 09:15:41
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/kdevelop5-plugin-php (Old)
and /work/SRC/openSUSE:Factory/.kdevelop5-plugin-php.new.28833 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "kdevelop5-plugin-php"
Tue Jan 15 09:15:41 2019 rev:12 rq:660854 version:5.3.1
Changes:
--------
---
/work/SRC/openSUSE:Factory/kdevelop5-plugin-php/kdevelop5-plugin-php.changes
2018-11-26 10:22:33.313574133 +0100
+++
/work/SRC/openSUSE:Factory/.kdevelop5-plugin-php.new.28833/kdevelop5-plugin-php.changes
2019-01-15 09:15:45.470269969 +0100
@@ -1,0 +2,9 @@
+Sat Dec 22 19:18:24 UTC 2018 - [email protected]
+
+- New upstream release 5.3.1
+ * Fix handling of array indexes after ClassNameReferences
+ (kde#401278)
+ * Fix syntax support for dynamic member access (kde#400294)
+- Run spec-cleaner
+
+-------------------------------------------------------------------
Old:
----
kdev-php-5.3.0.tar.xz
New:
----
kdev-php-5.3.1.tar.xz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ kdevelop5-plugin-php.spec ++++++
--- /var/tmp/diff_new_pack.fgSDqd/_old 2019-01-15 09:15:46.374269129 +0100
+++ /var/tmp/diff_new_pack.fgSDqd/_new 2019-01-15 09:15:46.378269125 +0100
@@ -18,16 +18,15 @@
# for compatibility with Leap 42.3 which doesn't have this macro yet
%{!?_kf5_debugdir: %global _kf5_debugdir %{_kf5_configdir}}
-
%define rname kdev-php
%define rversion 5.3
Name: kdevelop5-plugin-php
-Version: 5.3.0
+Version: 5.3.1
Release: 0
Summary: PHP plugin for Kdevelop5 Integrated Development Environment
-License: GPL-2.0+
+License: GPL-2.0-or-later
Group: Development/Tools/IDE
-Url: http://www.kdevelop.org
+URL: http://www.kdevelop.org
Source0:
http://download.kde.org/stable/kdevelop/%{version}/src/%{rname}-%{version}.tar.xz
BuildRequires: extra-cmake-modules
BuildRequires: kcmutils-devel
@@ -41,10 +40,9 @@
BuildRequires: pkgconfig(Qt5Core)
BuildRequires: pkgconfig(Qt5Test)
BuildRequires: pkgconfig(Qt5Widgets)
-Conflicts: kdevelop4-plugin-php
Requires: kdevelop5
Recommends: %{name}-lang
-BuildRoot: %{_tmppath}/%{name}-%{version}-build
+Conflicts: kdevelop4-plugin-php
%description
PHP plugin for Kdevelop Integrated Development Environment
@@ -72,12 +70,12 @@
Summary: Translations for package %{name}
Group: System/Localization
Requires: %{name} = %{version}
-Provides: %{name}-lang-all = %{version}
Supplements: packageand(bundle-lang-other:%{name})
-BuildArch: noarch
# Language file conflicts
-Conflicts: kdevelop4-plugins-php-doc
Conflicts: kdevelop4-plugins-php
+Conflicts: kdevelop4-plugins-php-doc
+Provides: %{name}-lang-all = %{version}
+BuildArch: noarch
%description lang
Provides translations to the package %{name}
@@ -97,7 +95,6 @@
%postun -p /sbin/ldconfig
%files
-%defattr(-,root,root)
%license COPYING
%doc AUTHORS HACKING TODO
%{_kf5_appstreamdir}/org.kde.kdev-php.metainfo.xml
@@ -113,6 +110,5 @@
%{_kf5_cmakedir}/KDevPHP/
%files lang -f %{name}.lang
-%defattr(-,root,root)
%changelog
++++++ kdev-php-5.3.0.tar.xz -> kdev-php-5.3.1.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/kdev-php-5.3.0/CMakeLists.txt
new/kdev-php-5.3.1/CMakeLists.txt
--- old/kdev-php-5.3.0/CMakeLists.txt 2018-10-25 10:31:46.000000000 +0200
+++ new/kdev-php-5.3.1/CMakeLists.txt 2018-12-06 10:53:12.000000000 +0100
@@ -3,7 +3,7 @@
set(KDEVPHP_VERSION_MAJOR 5)
set(KDEVPHP_VERSION_MINOR 3)
-set(KDEVPHP_VERSION_PATCH 0)
+set(KDEVPHP_VERSION_PATCH 1)
project(kdev-php VERSION
"${KDEVPHP_VERSION_MAJOR}.${KDEVPHP_VERSION_MINOR}.${KDEVPHP_VERSION_PATCH}")
find_package (ECM "5.14.0" REQUIRED NO_MODULE)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/kdev-php-5.3.0/docs/kcm_kdevphpdocs.desktop.cmake
new/kdev-php-5.3.1/docs/kcm_kdevphpdocs.desktop.cmake
--- old/kdev-php-5.3.0/docs/kcm_kdevphpdocs.desktop.cmake 2018-10-25
10:31:25.000000000 +0200
+++ new/kdev-php-5.3.1/docs/kcm_kdevphpdocs.desktop.cmake 2018-12-06
10:52:47.000000000 +0100
@@ -37,3 +37,4 @@
Name[uk]=Документація з PHP
Name[x-test]=xxPHP Documentationxx
Name[zh_CN]=PHP 文档
+Name[zh_TW]=PHP 文件
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/kdev-php-5.3.0/docs/kdevphpdocs.json
new/kdev-php-5.3.1/docs/kdevphpdocs.json
--- old/kdev-php-5.3.0/docs/kdevphpdocs.json 2018-10-25 10:31:25.000000000
+0200
+++ new/kdev-php-5.3.1/docs/kdevphpdocs.json 2018-12-06 10:52:47.000000000
+0100
@@ -25,7 +25,8 @@
"Name[tr]": "Milian Wolff",
"Name[uk]": "Milian Wolff",
"Name[x-test]": "xxMilian Wolffxx",
- "Name[zh_CN]": "Milian Wolff"
+ "Name[zh_CN]": "Milian Wolff",
+ "Name[zh_TW]": "Milian Wolff"
}
],
"Category": "Documentation",
@@ -51,6 +52,7 @@
"Description[uk]": "За допомогою цього додатка можна інтегрувати
документацію PHP.net.",
"Description[x-test]": "xxThis plugin integrates PHP.net online
documentation.xx",
"Description[zh_CN]": "此插件集成了 PHP.net 的在线文档。",
+ "Description[zh_TW]": "此外掛程式整合了 PHP.net 線上文件。",
"Icon": "application-x-php",
"Id": "kdevphpdocs",
"License": "GPL",
@@ -78,6 +80,7 @@
"Name[uk]": "Документація з PHP",
"Name[x-test]": "xxPHP Documentationxx",
"Name[zh_CN]": "PHP 文档",
+ "Name[zh_TW]": "PHP 文件",
"ServiceTypes": [
"KDevelop/Plugin"
]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/kdev-php-5.3.0/duchain/expressionvisitor.cpp
new/kdev-php-5.3.1/duchain/expressionvisitor.cpp
--- old/kdev-php-5.3.0/duchain/expressionvisitor.cpp 2018-10-25
10:31:25.000000000 +0200
+++ new/kdev-php-5.3.1/duchain/expressionvisitor.cpp 2018-12-06
10:52:47.000000000 +0100
@@ -697,20 +697,32 @@
{
//don't call DefaultVisitor::visitStaticMember(node);
//because we would end up in
visitCompoundVariableWithSimpleIndirectReference
- if (node->staticProperty->staticProperty->variable->variable) {
- DUContext* context = findClassContext(node->className);
- if (context) {
- useDeclaration(node->staticProperty->staticProperty->variable,
context);
- } else {
- usingDeclaration(node->className, DeclarationPointer());
+ if (node->staticProperty && node->staticProperty->staticProperty) {
+ if (node->staticProperty->staticProperty->variable) {
+ DUContext* context = findClassContext(node->className);
+ if (context) {
+ useDeclaration(node->staticProperty->staticProperty->variable,
context);
+ } else {
+ usingDeclaration(node->className, DeclarationPointer());
+ m_result.setType(AbstractType::Ptr());
+ }
+ } else if (node->staticProperty->staticProperty->expr) {
+ const QualifiedIdentifier id =
identifierForNamespace(node->className, m_editor);
+ DeclarationPointer declaration =
findDeclarationImport(ClassDeclarationType, id);
+
usingDeclaration(node->className->namespaceNameSequence->back()->element,
declaration);
+ buildNamespaceUses(node->className, id);
+
+ visitExpr(node->staticProperty->staticProperty->expr);
+
m_result.setType(AbstractType::Ptr());
}
- if (node->staticProperty->offsetItemsSequence) {
- const KDevPG::ListNode< DimListItemAst* >* it =
node->staticProperty->offsetItemsSequence->front();
- do {
- visitDimListItem(it->element);
- } while(it->hasNext() && (it = it->next));
- }
+ }
+
+ if (node->staticProperty && node->staticProperty->offsetItemsSequence) {
+ const KDevPG::ListNode< DimListItemAst* >* it =
node->staticProperty->offsetItemsSequence->front();
+ do {
+ visitDimListItem(it->element);
+ } while(it->hasNext() && (it = it->next));
}
}
@@ -719,11 +731,18 @@
if (node->staticProperty) {
DUContext* context = findClassContext(node->className->identifier);
- if (context) {
- useDeclaration(node->staticProperty->staticProperty->variable,
context);
+ if (context && node->staticProperty &&
node->staticProperty->staticProperty) {
+ if (node->staticProperty->staticProperty->variable) {
+ // static properties (object::$property)
+ useDeclaration(node->staticProperty->staticProperty->variable,
context);
+ } else if (node->staticProperty->staticProperty->expr) {
+ // variable static properties (object::${$property})
+ visitExpr(node->staticProperty->staticProperty->expr);
+ usingDeclaration(node->className, DeclarationPointer());
+ }
}
- if (node->staticProperty->offsetItemsSequence) {
+ if (node->staticProperty && node->staticProperty->offsetItemsSequence)
{
const KDevPG::ListNode< DimListItemAst* >* dim_it =
node->staticProperty->offsetItemsSequence->front();
do {
visitDimListItem(dim_it->element);
@@ -749,24 +768,24 @@
&&
it->element->property->variableWithoutObjects->variable->variable) {
VariableIdentifierAst *varnode =
it->element->property->variableWithoutObjects->variable->variable;
useDeclaration(varnode, m_currentContext);
+ } else if (it->element->property &&
it->element->property->variableWithoutObjects
+ &&
it->element->property->variableWithoutObjects->variable->expr) {
+ // variable dynamic properties ($object->${$property})
+
visitExpr(it->element->property->variableWithoutObjects->variable->expr);
} else if (!m_result.allDeclarations().isEmpty()) {
- // handle array indices after normal/static properties
($object->property[$index] // $object::$property[$index])
- if (it->element->property &&
it->element->property->objectDimList &&
it->element->property->objectDimList->offsetItemsSequence) {
- const KDevPG::ListNode< DimListItemAst* >* dim_it =
it->element->property->objectDimList->offsetItemsSequence->front();
- do {
- visitDimListItem(dim_it->element);
- } while(dim_it->hasNext() && (dim_it = dim_it->next));
- } else if (it->element->staticProperty &&
it->element->staticProperty->offsetItemsSequence) {
- const KDevPG::ListNode< DimListItemAst* >* dim_it =
it->element->staticProperty->offsetItemsSequence->front();
- do {
- visitDimListItem(dim_it->element);
- } while(dim_it->hasNext() && (dim_it = dim_it->next));
+ // Handle dynamic static properties first, as they don't
need a class context
+ if (it->element->staticProperty &&
it->element->staticProperty->staticProperty
+ && it->element->staticProperty->staticProperty->expr) {
+ // variable static properties ($object::${$property})
+
visitExpr(it->element->staticProperty->staticProperty->expr);
+ usingDeclaration(it->element->staticProperty,
DeclarationPointer());
}
type =
m_result.allDeclarations().last()->type<StructureType>();
if (!type) {
context = nullptr;
+ visitClassNameReferenceDimListItems(it->element);
continue;
}
@@ -776,6 +795,7 @@
if (!declaration) {
context = nullptr;
+ visitClassNameReferenceDimListItems(it->element);
continue;
}
@@ -783,10 +803,12 @@
if (!context || context->type() != DUContext::Class) {
context = nullptr;
+ visitClassNameReferenceDimListItems(it->element);
continue;
}
- if (it->element->staticProperty) {
+ if (it->element->staticProperty &&
it->element->staticProperty->staticProperty
+ &&
it->element->staticProperty->staticProperty->variable) {
// static properties ($object::$property)
VariableIdentifierAst *varnode =
it->element->staticProperty->staticProperty->variable;
useDeclaration(varnode, context);
@@ -798,6 +820,8 @@
} else {
context = nullptr;
}
+
+ visitClassNameReferenceDimListItems(it->element);
}
} while(it->hasNext() && (it = it->next));
}
@@ -805,6 +829,22 @@
}
+void ExpressionVisitor::visitClassNameReferenceDimListItems(ClassPropertyAst*
node)
+{
+ // handle array indices after normal/static properties
($object->property[$index] // $object::$property[$index])
+ if (node->property && node->property->objectDimList &&
node->property->objectDimList->offsetItemsSequence) {
+ const KDevPG::ListNode< DimListItemAst* >* dim_it =
node->property->objectDimList->offsetItemsSequence->front();
+ do {
+ visitDimListItem(dim_it->element);
+ } while(dim_it->hasNext() && (dim_it = dim_it->next));
+ } else if (node->staticProperty &&
node->staticProperty->offsetItemsSequence) {
+ const KDevPG::ListNode< DimListItemAst* >* dim_it =
node->staticProperty->offsetItemsSequence->front();
+ do {
+ visitDimListItem(dim_it->element);
+ } while(dim_it->hasNext() && (dim_it = dim_it->next));
+ }
+}
+
void ExpressionVisitor::visitUnaryExpression(UnaryExpressionAst* node)
{
DefaultVisitor::visitUnaryExpression(node);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/kdev-php-5.3.0/duchain/expressionvisitor.h
new/kdev-php-5.3.1/duchain/expressionvisitor.h
--- old/kdev-php-5.3.0/duchain/expressionvisitor.h 2018-10-25
10:31:25.000000000 +0200
+++ new/kdev-php-5.3.1/duchain/expressionvisitor.h 2018-12-06
10:52:47.000000000 +0100
@@ -68,6 +68,7 @@
void visitVariableProperty(VariablePropertyAst *node) override;
void visitStaticMember(StaticMemberAst* node) override;
void visitClassNameReference(ClassNameReferenceAst* node) override;
+ void visitClassNameReferenceDimListItems(ClassPropertyAst* node);
void visitUnaryExpression(UnaryExpressionAst* node) override;
void visitAdditiveExpressionRest(AdditiveExpressionRestAst* node) override;
void visitVariable(VariableAst* node) override;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/kdev-php-5.3.0/duchain/helper.cpp
new/kdev-php-5.3.1/duchain/helper.cpp
--- old/kdev-php-5.3.0/duchain/helper.cpp 2018-10-25 10:31:25.000000000
+0200
+++ new/kdev-php-5.3.1/duchain/helper.cpp 2018-12-06 10:52:47.000000000
+0100
@@ -571,9 +571,8 @@
if (node->isVariadic != -1) {
auto *container = new IndexedContainer();
- const IndexedString *containerType = new IndexedString("array");
container->addEntry(type);
- container->setPrettyName(*containerType);
+ container->setPrettyName(IndexedString("array"));
type = AbstractType::Ptr(container);
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/kdev-php-5.3.0/duchain/tests/uses.cpp
new/kdev-php-5.3.1/duchain/tests/uses.cpp
--- old/kdev-php-5.3.0/duchain/tests/uses.cpp 2018-10-25 10:31:25.000000000
+0200
+++ new/kdev-php-5.3.1/duchain/tests/uses.cpp 2018-12-06 10:52:47.000000000
+0100
@@ -390,6 +390,26 @@
compareUses(top->localDeclarations().at(1), RangeInRevision(0, 52, 0, 56));
}
+void TestUses::dynamicStaticMemberVariable()
+{
+ // 0 1 2 3 4 5
6 7
+ //
01234567890123456789012345678901234567890123456789012345678901234567890123456789
+ QByteArray method("<? class A { public static $foo; } $var='foo';
A::${$var};");
+ TopDUContext* top = parse(method, DumpAll);
+ DUChainReleaser releaseTop(top);
+ DUChainWriteLocker lock(DUChain::lock());
+
+ Declaration* dec = top->localDeclarations().at(0);
+ QCOMPARE(dec->identifier(), Identifier("a"));
+ compareUses(dec, QList<RangeInRevision>()
+ << RangeInRevision(0, 47, 0, 48));
+
+ dec = top->localDeclarations().at(1);
+ QCOMPARE(dec->identifier(), Identifier("var"));
+ compareUses(dec, QList<RangeInRevision>()
+ << RangeInRevision(0, 52, 0, 56));
+}
+
void TestUses::constant()
{
// 0 1 2 3 4 5
6 7
@@ -1333,6 +1353,98 @@
<< RangeInRevision(3, 38, 3, 42));
}
+void TestUses::instanceofDynamicStaticProperty()
+{
+ // 0 1 2 3 4
5
+ //
012345678901234567890123456789012345678901234567890123456789
+ TopDUContext* top = parse("<? class A { /** @var B **/ public $foo; }\n"
+ "class B { /** @var A **/ public $bar; }\n"
+ "$foo = 'foo'; $bar = 'bar';\n"
+ "$a = new A(); $a instanceof
$a::${$foo}::${$bar}::${$foo};\n", DumpNone);
+
+ QVERIFY(top);
+ DUChainReleaser releaseTop(top);
+ DUChainWriteLocker lock;
+
+ QVERIFY(top->problems().isEmpty());
+
+ QVERIFY(!top->parentContext());
+ QCOMPARE(top->childContexts().count(), 2);
+ QCOMPARE(top->localDeclarations().count(), 5);
+
+ Declaration* dec = top->localDeclarations().at(0);
+ QCOMPARE(dec->identifier(), Identifier("a"));
+ compareUses(dec, QList<RangeInRevision>()
+ << RangeInRevision(3, 9, 3, 10));
+
+ dec = top->localDeclarations().at(4);
+ QCOMPARE(dec->identifier(), Identifier("a"));
+ StructureType::Ptr classType = dec->type<StructureType>();
+ QVERIFY(classType);
+ QCOMPARE(classType->qualifiedIdentifier(), QualifiedIdentifier("a"));
+ QVERIFY(classType->equals(dec->abstractType().data()));
+ compareUses(dec, QList<RangeInRevision>()
+ << RangeInRevision(3, 14, 3, 16)
+ << RangeInRevision(3, 28, 3, 30));
+
+ dec = top->localDeclarations().at(2);
+ QCOMPARE(dec->identifier(), Identifier("foo"));
+ compareUses(dec, QList<RangeInRevision>()
+ << RangeInRevision(3, 34, 3, 38)
+ << RangeInRevision(3, 52, 3, 56));
+
+ dec = top->localDeclarations().at(3);
+ QCOMPARE(dec->identifier(), Identifier("bar"));
+ compareUses(dec, QList<RangeInRevision>()
+ << RangeInRevision(3, 43, 3, 47));
+}
+
+void TestUses::instanceofDynamicVariableProperty()
+{
+ // 0 1 2 3 4
5
+ //
012345678901234567890123456789012345678901234567890123456789
+ TopDUContext* top = parse("<? class A { /** @var B **/ public $foo; }\n"
+ "class B { /** @var A **/ public $bar; }\n"
+ "$foo = 'foo'; $bar = 'bar';\n"
+ "$a = new A(); $a instanceof
$a->${$foo}->${$bar}->${$foo};\n", DumpNone);
+
+ QVERIFY(top);
+ DUChainReleaser releaseTop(top);
+ DUChainWriteLocker lock;
+
+ QVERIFY(top->problems().isEmpty());
+
+ QVERIFY(!top->parentContext());
+ QCOMPARE(top->childContexts().count(), 2);
+ QCOMPARE(top->localDeclarations().count(), 5);
+
+ Declaration* dec = top->localDeclarations().at(0);
+ QCOMPARE(dec->identifier(), Identifier("a"));
+ compareUses(dec, QList<RangeInRevision>()
+ << RangeInRevision(3, 9, 3, 10));
+
+ dec = top->localDeclarations().at(4);
+ QCOMPARE(dec->identifier(), Identifier("a"));
+ StructureType::Ptr classType = dec->type<StructureType>();
+ QVERIFY(classType);
+ QCOMPARE(classType->qualifiedIdentifier(), QualifiedIdentifier("a"));
+ QVERIFY(classType->equals(dec->abstractType().data()));
+ compareUses(dec, QList<RangeInRevision>()
+ << RangeInRevision(3, 14, 3, 16)
+ << RangeInRevision(3, 28, 3, 30));
+
+ dec = top->localDeclarations().at(2);
+ QCOMPARE(dec->identifier(), Identifier("foo"));
+ compareUses(dec, QList<RangeInRevision>()
+ << RangeInRevision(3, 34, 3, 38)
+ << RangeInRevision(3, 52, 3, 56));
+
+ dec = top->localDeclarations().at(3);
+ QCOMPARE(dec->identifier(), Identifier("bar"));
+ compareUses(dec, QList<RangeInRevision>()
+ << RangeInRevision(3, 43, 3, 47));
+}
+
void TestUses::instanceofPropertyArrayAccess()
{
// 0 1 2 3 4
5
@@ -1376,6 +1488,39 @@
QVERIFY(dec->uses().isEmpty());
}
+void TestUses::dimListAfterClassNameReference()
+{
+ // 0 1 2 3 4
5
+ //
012345678901234567890123456789012345678901234567890123456789
+ TopDUContext* top = parse("<? class A { /** @var array **/ public $foo;\n"
+ "public function bar() { $object = new
$this->foo[$index]; }\n"
+ "}\n", DumpNone);
+
+ QVERIFY(top);
+ DUChainReleaser releaseTop(top);
+ DUChainWriteLocker lock;
+
+ QVERIFY(top->problems().isEmpty());
+
+ QVERIFY(!top->parentContext());
+ QCOMPARE(top->childContexts().count(), 1);
+ QCOMPARE(top->localDeclarations().count(), 1);
+
+ Declaration* dec = top->localDeclarations().at(0);
+ QCOMPARE(dec->identifier(), Identifier("a"));
+ compareUses(dec, QList<RangeInRevision>()
+ << RangeInRevision(1, 38, 1, 43));
+
+ QCOMPARE(top->childContexts().at(0)->localDeclarations().count(), 2);
+ QCOMPARE(top->childContexts().at(0)->childContexts().count(), 2);
+
QCOMPARE(top->childContexts().at(0)->childContexts().at(1)->localDeclarations().count(),
1);
+
+ dec = top->childContexts().at(0)->localDeclarations().at(0);
+ QCOMPARE(dec->identifier(), Identifier("foo"));
+ compareUses(dec, QList<RangeInRevision>()
+ << RangeInRevision(1, 45, 1, 48));
+}
+
void TestUses::classNameString()
{
// 0 1 2 3 4 5
6 7
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/kdev-php-5.3.0/duchain/tests/uses.h
new/kdev-php-5.3.1/duchain/tests/uses.h
--- old/kdev-php-5.3.0/duchain/tests/uses.h 2018-10-25 10:31:25.000000000
+0200
+++ new/kdev-php-5.3.1/duchain/tests/uses.h 2018-12-06 10:52:47.000000000
+0100
@@ -53,6 +53,7 @@
void interfaceExtendsMultiple();
void staticMemberFunctionCall();
void staticMemberVariable();
+ void dynamicStaticMemberVariable();
void constant();
void classConstant();
void classParent();
@@ -89,7 +90,10 @@
void instanceofStaticProperty();
void instanceofMixedProperty();
void instanceofVariableProperty();
+ void instanceofDynamicStaticProperty();
+ void instanceofDynamicVariableProperty();
void instanceofPropertyArrayAccess();
+ void dimListAfterClassNameReference();
void classNameString();
void useTrait();
void exceptionFinally();
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/kdev-php-5.3.0/kdevphpsupport.json
new/kdev-php-5.3.1/kdevphpsupport.json
--- old/kdev-php-5.3.0/kdevphpsupport.json 2018-10-25 10:31:25.000000000
+0200
+++ new/kdev-php-5.3.1/kdevphpsupport.json 2018-12-06 10:52:47.000000000
+0100
@@ -25,6 +25,7 @@
"Description[uk]": "Підтримка мови PHP",
"Description[x-test]": "xxPHP Language Supportxx",
"Description[zh_CN]": "PHP 语言支持",
+ "Description[zh_TW]": "PHP 語言支援",
"Icon": "application-x-php",
"Id": "KDevPhpSupport",
"Name": "PHP Language Support",
@@ -51,6 +52,7 @@
"Name[uk]": "Підтримка мови PHP",
"Name[x-test]": "xxPHP Language Supportxx",
"Name[zh_CN]": "Php 语言支持",
+ "Name[zh_TW]": "PHP 語言支援",
"ServiceTypes": [
"KDevelop/Plugin"
]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/kdev-php-5.3.0/org.kde.kdev-php.metainfo.xml
new/kdev-php-5.3.1/org.kde.kdev-php.metainfo.xml
--- old/kdev-php-5.3.0/org.kde.kdev-php.metainfo.xml 2018-10-25
10:31:25.000000000 +0200
+++ new/kdev-php-5.3.1/org.kde.kdev-php.metainfo.xml 2018-12-06
10:52:47.000000000 +0100
@@ -20,6 +20,7 @@
<name xml:lang="sv">KDevelop PHP-stöd</name>
<name xml:lang="uk">Підтримка PHP KDevelop</name>
<name xml:lang="x-test">xxKDevelop PHP Supportxx</name>
+ <name xml:lang="zh-CN">KDevelop PHP 支持</name>
<summary>PHP language support for KDevelop</summary>
<summary xml:lang="ca">Implementació del llenguatge PHP al KDevelop</summary>
<summary xml:lang="ca-valencia">Implementació del llenguatge PHP al
KDevelop</summary>
@@ -38,6 +39,7 @@
<summary xml:lang="sv">Stöd för språket PHP i KDevelop</summary>
<summary xml:lang="uk">Підтримка мови PHP у KDevelop</summary>
<summary xml:lang="x-test">xxPHP language support for KDevelopxx</summary>
+ <summary xml:lang="zh-CN">KDevelop 的 PHP 语言支持</summary>
<project_license>GPL-2.0+</project_license>
<metadata_license>CC0-1.0</metadata_license>
<url type="homepage">https://kdevelop.org</url>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/kdev-php-5.3.0/po/en_GB/kdevphp.po
new/kdev-php-5.3.1/po/en_GB/kdevphp.po
--- old/kdev-php-5.3.0/po/en_GB/kdevphp.po 2018-10-25 10:31:36.000000000
+0200
+++ new/kdev-php-5.3.1/po/en_GB/kdevphp.po 2018-12-06 10:53:00.000000000
+0100
@@ -2,13 +2,13 @@
# This file is distributed under the same license as the PACKAGE package.
#
# Andrew Coles <[email protected]>, 2009, 2010.
-# Steve Allewell <[email protected]>, 2014, 2015, 2016, 2017.
+# Steve Allewell <[email protected]>, 2014, 2015, 2016, 2017, 2018.
msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
"POT-Creation-Date: 2018-08-26 06:19+0200\n"
-"PO-Revision-Date: 2017-11-26 20:50+0000\n"
+"PO-Revision-Date: 2018-10-27 20:36+0100\n"
"Last-Translator: Steve Allewell <[email protected]>\n"
"Language-Team: British English <[email protected]>\n"
"Language: en_GB\n"
@@ -144,10 +144,9 @@
#: duchain/builders/declarationbuilder.cpp:230
#: duchain/builders/declarationbuilder.cpp:845
#: duchain/builders/declarationbuilder.cpp:884
-#, fuzzy, kde-format
-#| msgid "Cannot use '%1' as '%2' because the name is already in use."
+#, kde-format
msgid "Cannot use '%1' as class name as it is reserved"
-msgstr "Cannot use '%1' as '%2' because the name is already in use."
+msgstr "Cannot use '%1' as class name as it is reserved"
#: duchain/builders/declarationbuilder.cpp:353
#, kde-format
@@ -213,13 +212,14 @@
"A class constant must not be called 'class'; it is reserved for class name "
"fetching"
msgstr ""
+"A class constant must not be called 'class'; it is reserved for class name "
+"fetching"
#: duchain/builders/declarationbuilder.cpp:730
#: duchain/builders/declarationbuilder.cpp:756
-#, fuzzy, kde-format
-#| msgid "Cannot use 'static' as method modifier"
+#, kde-format
msgid "Cannot use 'abstract' as method modifier"
-msgstr "Cannot use 'static' as method modifier"
+msgstr "Cannot use 'abstract' as method modifier"
#: duchain/builders/declarationbuilder.cpp:733
#: duchain/builders/declarationbuilder.cpp:759
@@ -244,11 +244,9 @@
msgstr "Default value for parameters with a class type hint can only be NULL."
#: duchain/builders/declarationbuilder.cpp:822
-#, fuzzy, kde-format
-#| msgid ""
-#| "Default value for parameters with a class type hint can only be NULL."
+#, kde-format
msgid "Default value for parameters with an object type can only be NULL."
-msgstr "Default value for parameters with a class type hint can only be NULL."
+msgstr "Default value for parameters with an object type can only be NULL."
#: duchain/builders/declarationbuilder.cpp:850
#, kde-format
@@ -291,16 +289,14 @@
msgstr "Cannot re-assign $this."
#: duchain/builders/declarationbuilder.cpp:1262
-#, fuzzy, kde-format
-#| msgid "Cannot redeclare private property %1 from this context."
+#, kde-format
msgid "Cannot access private property %1"
-msgstr "Cannot redeclare private property %1 from this context."
+msgstr "Cannot access private property %1"
#: duchain/builders/declarationbuilder.cpp:1265
-#, fuzzy, kde-format
-#| msgid "Cannot redeclare protected property %1 from this context."
+#, kde-format
msgid "Cannot access protected property %1"
-msgstr "Cannot redeclare protected property %1 from this context."
+msgstr "Cannot access protected property %1"
#: duchain/builders/declarationbuilder.cpp:1411
#, kde-format
@@ -318,15 +314,14 @@
msgstr "Cannot use '%1' as '%2' because the name is already in use."
#: duchain/builders/declarationbuilder.cpp:1662
-#, fuzzy, kde-format
-#| msgid "Cannot use '%1' as '%2' because the name is already in use."
+#, kde-format
msgid "Cannot use %1 as %2 because '%2' is a special class name"
-msgstr "Cannot use '%1' as '%2' because the name is already in use."
+msgstr "Cannot use %1 as %2 because '%2' is a special class name"
#: duchain/builders/declarationbuilder.cpp:1672
#, kde-format
msgid "The 'yield' expression can only be used inside a function"
-msgstr ""
+msgstr "The 'yield' expression can only be used inside a function"
#: duchain/builders/usebuilder.cpp:207
#, kde-format
@@ -377,10 +372,9 @@
msgstr "empty (not inside a class)"
#: duchain/navigation/magicconstantnavigationcontext.cpp:83
-#, fuzzy, kde-format
-#| msgid "empty (not inside a class)"
+#, kde-format
msgid "empty (not inside a trait)"
-msgstr "empty (not inside a class)"
+msgstr "empty (not inside a trait)"
#: duchain/navigation/magicconstantnavigationcontext.cpp:102
#, kde-format
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/kdev-php-5.3.0/po/zh_CN/kdevphp.po
new/kdev-php-5.3.1/po/zh_CN/kdevphp.po
--- old/kdev-php-5.3.0/po/zh_CN/kdevphp.po 2018-10-25 10:31:46.000000000
+0200
+++ new/kdev-php-5.3.1/po/zh_CN/kdevphp.po 2018-12-06 10:53:12.000000000
+0100
@@ -9,7 +9,7 @@
"Project-Id-Version: kdeorg\n"
"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
"POT-Creation-Date: 2018-08-26 06:19+0200\n"
-"PO-Revision-Date: 2018-10-09 18:49\n"
+"PO-Revision-Date: 2018-11-12 09:25\n"
"Last-Translator: guoyunhe <[email protected]>\n"
"Language-Team: Chinese Simplified\n"
"Language: zh_CN\n"
@@ -51,7 +51,7 @@
#: docs/phpdocsconfig.ui:20
#, kde-format
msgid "PHP Manual Integration"
-msgstr ""
+msgstr "PHP 手册整合"
#. i18n: ectx: property (text), widget (QLabel, PhpDocNote)
#: docs/phpdocsconfig.ui:36
@@ -220,13 +220,13 @@
#: duchain/builders/declarationbuilder.cpp:759
#, kde-format
msgid "Cannot use 'final' as method modifier"
-msgstr ""
+msgstr "无法将“final”用做方法修饰符"
#: duchain/builders/declarationbuilder.cpp:736
#: duchain/builders/declarationbuilder.cpp:762
#, kde-format
msgid "Cannot use 'static' as method modifier"
-msgstr ""
+msgstr "无法将“static”用做方法修饰符"
#: duchain/builders/declarationbuilder.cpp:811
#, kde-format
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/kdev-php-5.3.0/po/zh_TW/kdevphp.po
new/kdev-php-5.3.1/po/zh_TW/kdevphp.po
--- old/kdev-php-5.3.0/po/zh_TW/kdevphp.po 2018-10-25 10:31:46.000000000
+0200
+++ new/kdev-php-5.3.1/po/zh_TW/kdevphp.po 2018-12-06 10:53:12.000000000
+0100
@@ -5,19 +5,20 @@
# Frank Weng (a.k.a. Franklin) <[email protected]>, 2009, 2010.
# Franklin Weng <[email protected]>, 2010.
# Franklin Weng <[email protected]>, 2012, 2013, 2014.
+# pan93412 <[email protected]>, 2018.
msgid ""
msgstr ""
"Project-Id-Version: kdevphp\n"
"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
"POT-Creation-Date: 2018-08-26 06:19+0200\n"
-"PO-Revision-Date: 2014-04-23 14:56+0800\n"
-"Last-Translator: Franklin Weng <franklin at goodhorse dot idv dot tw>\n"
-"Language-Team: Chinese Traditional <[email protected]>\n"
+"PO-Revision-Date: 2018-12-02 23:39+0800\n"
+"Last-Translator: pan93412 <[email protected]>\n"
+"Language-Team: Chinese <[email protected]>\n"
"Language: zh_TW\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Generator: Lokalize 1.5\n"
+"X-Generator: Lokalize 2.0\n"
"Plural-Forms: nplurals=1; plural=0;\n"
#, kde-format
@@ -54,7 +55,7 @@
#. i18n: ectx: property (text), widget (QLabel, PhpDocNote)
#: docs/phpdocsconfig.ui:36
-#, kde-format
+#, fuzzy, kde-format
msgid ""
"<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0//EN\" \"http://www.w3.org/TR/"
"REC-html40/strict.dtd\">\n"
@@ -71,29 +72,41 @@
"your choice. Make sure you downloaded the <span style=\" font-style:italic;"
"\">\"Many HTML files\"</span> package.</p></body></html>"
msgstr ""
+"<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0//EN\" \"http://www.w3.org/TR/"
+"REC-html40/strict.dtd\">\n"
+"<html><head><meta name=\"qrichtext\" content=\"1\" /><style type=\"text/css"
+"\">\n"
+"p, li { white-space: pre-wrap; }\n"
+"</style></head><body style=\" font-family:'DejaVu Sans'; font-size:8pt; font-"
+"weight:400; font-style:normal;\">\n"
+"<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-"
+"right:0px; -qt-block-indent:0; text-indent:0px;\">預設會使用遠端線上的 <a "
+"href=\"http://php.net\"><span style=\" text-decoration: underline; color:"
+"#0000ff;\">PHP 文件</span></a>。不過您可以設定使用本地端的文件複本,也許是您"
+"選擇的語言。請確定您下載了 <span style=\" font-style:italic;\">\"HTML "
+"format, many files\"</span> 套件。</p></body></html>"
#. i18n: ectx: property (text), widget (QLabel, PhpDocLocationLabel)
#: docs/phpdocsconfig.ui:57
#, kde-format
msgid "Location:"
-msgstr ""
+msgstr "位置:"
#: docs/phpdocsmodel.cpp:110
#, kde-format
msgid "<lost declaration>"
-msgstr ""
+msgstr "<遺失的宣告>"
#: docs/phpdocsplugin.cpp:221
-#, fuzzy, kde-format
-#| msgid "PHPUnit Integration"
+#, kde-format
msgid "PHP Documentation"
-msgstr "PHPUnit 整合"
+msgstr "PHP 文件"
#. i18n: ectx: label, entry (phpDocLocation), group (PHP Documentation)
#: docs/phpdocssettings.kcfg:10
#, kde-format
msgid "Specifies the location of the PHP documentation to use."
-msgstr ""
+msgstr "指定 PHP 文件使用的位置。"
#. i18n: ectx: tooltip, entry (phpDocLocation), group (PHP Documentation)
#: docs/phpdocssettings.kcfg:13
@@ -104,6 +117,9 @@
"contains the\n"
" PHP documentation in HTML format with many files."
msgstr ""
+"PHP 文件使用的位置。您可以用遠端的網址,如 http://php.net,或是本地端的目"
+"錄,\n"
+"目錄中要包含 PHP 文件,以多個 HTML 檔案的方式存放。"
#. i18n: ectx: whatsthis, entry (phpDocLocation), group (PHP Documentation)
#: docs/phpdocssettings.kcfg:15
@@ -111,12 +127,12 @@
msgid ""
"Make sure local copies are downloaded in HTML format with many files.\n"
" "
-msgstr ""
+msgstr "請確定本地端複本是以多個 HTML 檔案的方式存放。"
#: docs/phpdocumentationwidget.cpp:74
#, kde-format
msgid "...loading documentation..."
-msgstr ""
+msgstr "... 載入文件中 ..."
#: duchain/builders/contextbuilder.cpp:461
#, kde-format
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/kdev-php-5.3.0/testprovider/kdevphpunitprovider.json
new/kdev-php-5.3.1/testprovider/kdevphpunitprovider.json
--- old/kdev-php-5.3.0/testprovider/kdevphpunitprovider.json 2018-10-25
10:31:25.000000000 +0200
+++ new/kdev-php-5.3.1/testprovider/kdevphpunitprovider.json 2018-12-06
10:52:47.000000000 +0100
@@ -7,6 +7,7 @@
"Name[ca]": "Miha Čančula",
"Name[cs]": "Miha Čančula",
"Name[de]": "Miha Čančula",
+ "Name[en_GB]": "Miha Čančula",
"Name[es]": "Miha Čančula",
"Name[fr]": "Miha Čančula",
"Name[it]": "Miha Čančula",
@@ -18,7 +19,8 @@
"Name[sv]": "Miha Čančula",
"Name[uk]": "Miha Čančula",
"Name[x-test]": "xxMiha Čančulaxx",
- "Name[zh_CN]": "Miha Čančula"
+ "Name[zh_CN]": "Miha Čančula",
+ "Name[zh_TW]": "Miha Čančula"
}
],
"Category": "Testing",
@@ -27,6 +29,7 @@
"Description[ca]": "Cerca i executa proves del PHPUnit.",
"Description[cs]": "Hledá a spouští testy PHPUnit.",
"Description[de]": "Sucht und führt PHPUnit-Tests aus.",
+ "Description[en_GB]": "Finds and runs PHPUnit tests.",
"Description[es]": "Encuentra y ejecuta pruebas PHPUnit.",
"Description[fr]": "Trouve et exécute des tests « PHPUnit ».",
"Description[it]": "Trova ed esegue i test PHPUnit.",
@@ -39,6 +42,7 @@
"Description[uk]": "Знаходить і запускає перевірки PHPUnit.",
"Description[x-test]": "xxFinds and runs PHPUnit tests.xx",
"Description[zh_CN]": "查找并运行 PHPUnit 测试",
+ "Description[zh_TW]": "尋找並執行 PHPUnit 測試。",
"Icon": "application-x-php",
"Id": "kdevphpunitprovider",
"License": "GPL",
@@ -47,6 +51,7 @@
"Name[ca]": "Integració del PHPUnit",
"Name[cs]": "Integrace PHPUnit",
"Name[de]": "PHPUnit-Integration",
+ "Name[en_GB]": "PHPUnit Integration",
"Name[es]": "Integración de PHPUnit",
"Name[fr]": "Intégration de « PHPUnit »",
"Name[it]": "Integrazione PHPUnit",
@@ -59,6 +64,7 @@
"Name[uk]": "Інтеграція з PHPUnit",
"Name[x-test]": "xxPHPUnit Integrationxx",
"Name[zh_CN]": "PHPUnit 集成",
+ "Name[zh_TW]": "PHPUnit 整合",
"ServiceTypes": [
"KDevelop/Plugin"
]